TITLE:BoxLayoutでリスト状に並べる

BoxLayoutでリスト状に並べる

編集者:Terai Atsuhiro
作成日:2004-03-22
更新日:2022-08-02 (火) 16:37:39

概要

高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。

#screenshot

サンプルコード

 private final Box pnl = Box.createVerticalBox();
 private final Vector list = new Vector();
 public void addComp(JComponent c) {
   list.addElement(c);
   pnl.removeAll();
   for(int i=0;i<list.size();i++) {
     JComponent tmp = (JComponent)list.get(i);
     Dimension d = tmp.getPreferredSize();
     tmp.setMaximumSize(new Dimension(Integer.MAX_VALUE, d.height));
     pnl.add(tmp);
   }
   pnl.add(Box.createVerticalGlue());
   pnl.revalidate();
 }
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルでは、Box.createVerticalBoxを使ってリスト状に並べています。この際、各コンポーネントの高さは変化せず、幅だけフレームサイズに追従するように、JComponent#setMinimumSizeを指定しています。

コンポーネントの高さの合計がフレームの高さより小さい場合は、下部に余白が出来るように、最後にBox.createVerticalGlueを追加しています。

コメント

  • SpringLayoutではなく、BoxLayoutを使うようにサンプルを変更しました。 -- terai