BoxLayoutでリスト状に並べる
Total: 11413, Today: 1, Yesterday: 1
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());
    }
  });
}
Description
- Box.createVerticalBox()で作成した- Boxにコンポーネントを追加してリスト状に並べて配置
- 各コンポーネントの高さは推奨サイズから変更せず、幅のみ親フレームサイズに追従するようにJComponent#setMaximumSize(...)を設定
- 各コンポーネントの高さの合計が親フレームの高さ以下になる場合は下部に余白が生成されるよう末尾にBox.createVerticalGlue()を追加