BoxLayoutでリスト状に並べる
Total: 10947
, Today: 2
, Yesterday: 5
Posted by aterai at
Last-modified:
Summary
高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。
Screenshot
Advertisement
Source Code Examples
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, KotlinExplanation
Box.createVerticalBox()
で作成したBox
にコンポーネントを追加してリスト状に並べて配置- 各コンポーネントの高さは推奨サイズから変更せず、幅のみ親フレームサイズに追従するように
JComponent#setMaximumSize(...)
を設定 - 各コンポーネントの高さの合計が親フレームの高さ以下になる場合は下部に余白が生成されるよう末尾に
Box.createVerticalGlue()
を追加