概要

JPanelBorderLayoutを設定し、JButtonのクリックで子コンポーネントの配置を入れ替えることで、それらの展開と折り畳みを行います。

サンプルコード

private void initComps(
    List<? extends AbstractExpansionPanel> list,
    JComponent source) {
  setVisible(false);
  centerBox.removeAll();
  northBox.removeAll();
  southBox.removeAll();
  boolean insertSouth = false;
  for (AbstractExpansionPanel exp : list) {
    if (source.equals(exp) && exp.isSelected()) {
      centerBox.add(exp);
      insertSouth = true;
      continue;
    }
    exp.setSelected(false);
    if (insertSouth) {
      southBox.add(exp);
    } else {
      northBox.add(exp);
    }
  }
  setVisible(true);
}
view all

解説

上記のサンプルでは、ボタンが押されるたびにそのパネルの展開(子コンポーネントの追加)と折り畳み(子コンポーネントの削除)を行っています。同時にBorderLayoutNORTHCENTERSOUTHに各パネルを振り分けを行い、展開されるパネル一つだけが推奨サイズ(PreferredSize)が無視されて任意の高さに拡張されるCENTERに配置されます。


L2FProd.com - Common Components にあるJOutlookBarで、アニメーション付きでパネルの展開や折り畳みが可能です。ソースも公開されているので参考にしてみてください。

参考リンク

コメント