Swing/ComponentList のバックアップ(No.12)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ComponentList へ行く。
- 1 (2006-06-26 (月) 15:13:35)
- 2 (2006-06-27 (火) 11:25:11)
- 3 (2006-11-24 (金) 15:52:46)
- 4 (2007-08-30 (木) 14:45:12)
- 5 (2009-05-15 (金) 18:59:43)
- 6 (2009-05-15 (金) 22:54:28)
- 7 (2013-02-20 (水) 15:53:16)
- 8 (2013-02-28 (木) 14:34:59)
- 9 (2013-10-16 (水) 14:27:06)
- 10 (2015-11-01 (日) 22:31:34)
- 11 (2016-09-06 (火) 13:43:17)
- 12 (2017-04-04 (火) 14:17:08)
- 13 (2017-10-15 (日) 20:13:17)
- 14 (2018-10-20 (土) 19:09:16)
- 15 (2020-10-18 (日) 18:44:46)
- 16 (2022-08-02 (火) 16:37:39)
- 17 (2024-06-30 (日) 02:35:27)
- category: swing folder: ComponentList title: BoxLayoutでリスト状に並べる tags: [BoxLayout, LayoutManager] author: aterai pubdate: 2006-06-15T19:34:32+09:00 description: 高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。 image:
概要
高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。
Screenshot
Advertisement
サンプルコード
private final Box box = Box.createVerticalBox();
private final Component glue = Box.createVerticalGlue();
public void addComp(final JComponent comp) {
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()
で作成したBox
にコンポーネントを追加してリスト状に並べています。この際、各コンポーネントの高さは変化せず、幅だけフレームサイズに追従するように、JComponent#setMaximumSize
を設定しています。
コンポーネントの高さの合計がフレームの高さより小さい場合は、下部に余白が出来るように、最後にBox.createVerticalGlue()
を追加しています。