Swing/ComponentList のバックアップの現在との差分(No.10)
- category: swing folder: ComponentList title: BoxLayoutでリスト状に並べる tags: [BoxLayout, LayoutManager] author: aterai pubdate: 2006-06-15 pubdate: 2006-06-15T19:34:32+09:00 description: 高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。 image:
概要
概要
高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。Screenshot
Advertisement
サンプルコード
サンプルコード
private final Box box = Box.createVerticalBox();
private final Component glue = Box.createVerticalGlue();
#spandel
public void addComp(final JComponent comp) {
#spanend
#spanadd
public void addComp(JComponent comp) {
#spanend
comp.setMaximumSize(new Dimension(
Short.MAX_VALUE, comp.getPreferredSize().height));
box.remove(glue);
box.add(Box.createVerticalStrut(5));
box.add(comp);
box.add(glue);
box.revalidate();
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
comp.scrollRectToVisible(comp.getBounds());
}
});
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Box.createVerticalBox
を使ってリスト状に並べています。この際、各コンポーネントの高さは変化せず、幅だけフレームサイズに追従するように、JComponent#setMaximumSize
を設定しています。
解説
上記のサンプルでは、Box.createVerticalBox()
で作成したBox
にコンポーネントを追加してリスト状に並べています。
コンポーネントの高さの合計がフレームの高さより小さい場合は、下部に余白が出来るように、最後にBox.createVerticalGlue
を追加しています。
- 各コンポーネントの高さは変化せず幅だけフレームサイズに追従するように
JComponent#setMaximumSize(...)
を設定 - 各コンポーネントの高さの合計がフレームの高さより小さい場合は下部に余白が生成されるよう末尾に
Box.createVerticalGlue()
を追加