BoxLayoutでリスト状に並べる
Total: 10910
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。
Screenshot
Advertisement
サンプルコード
private final Box box = Box.createVerticalBox();
private final Component glue = Box.createVerticalGlue();
public void addComp(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()
を追加