Swing/ComponentList の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ComponentList へ行く。
- Swing/ComponentList の差分を削除
--- category: swing folder: ComponentList title: BoxLayoutでリスト状に並べる tags: [BoxLayout, LayoutManager] author: aterai pubdate: 2006-06-15T19:34:32+09:00 description: 高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTJ_UDZVaI/AAAAAAAAAVQ/BbW1hLhenS8/s800/ComponentList.png --- * 概要 [#summary] 高さの異なるコンポーネントをスクロールできるようにリスト状に並べます。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTJ_UDZVaI/AAAAAAAAAVQ/BbW1hLhenS8/s800/ComponentList.png) * サンプルコード [#sourcecode] #code(link){{ 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()); } }); } }} * 解説 [#explanation] 上記のサンプルでは、`Box.createVerticalBox()`で作成した`Box`にコンポーネントを追加してリスト状に並べています。 - `Box.createVerticalBox()`で作成した`Box`にコンポーネントを追加してリスト状に並べて配置 - 各コンポーネントの高さは推奨サイズから変更せず、幅のみ親フレームサイズに追従するように`JComponent#setMaximumSize(...)`を設定 - 各コンポーネントの高さの合計が親フレームの高さ以下になる場合は下部に余白が生成されるよう末尾に`Box.createVerticalGlue()`を追加 - 各コンポーネントの高さは変化せず幅だけフレームサイズに追従するように`JComponent#setMaximumSize(...)`を設定 - 各コンポーネントの高さの合計がフレームの高さより小さい場合は下部に余白が生成されるよう末尾に`Box.createVerticalGlue()`を追加 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/Box.html Box (Java Platform SE 8)] * コメント [#comment] #comment - `SpringLayout`ではなく、`BoxLayout`を使うようにサンプルを変更しました。 -- &user(aterai); &new{2006-06-26 (月) 15:34:41}; - 解説がソースと異なり、`setMinimumSize`となっていたのを`setMaximumSize`に修正。 -- &user(aterai); &new{2009-05-15 (金) 22:58:16}; - `SpringLayout`ではなく`BoxLayout`を使うようにサンプルを変更しました。 -- &user(aterai); &new{2006-06-26 (月) 15:34:41}; - 解説がソースと異なり`setMinimumSize`となっていたのを`setMaximumSize`に修正。 -- &user(aterai); &new{2009-05-15 (金) 22:58:16}; #comment