• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JPanelの展開と折り畳み
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2004-11-01
*JPanelの展開と折り畳み [#f49f27f2]
JPanelの展開と折り畳みを行います。
---
title: JPanelの展開と折り畳み
tags: [JPanel, BorderLayout]
author: aterai
pubdate: 2004-11-01T01:05:24+09:00
description: JPanelの展開と折り畳みを行います。
---
* 概要 [#f49f27f2]
`JPanel`の展開と折り畳みを行います。

-&jnlp;
-&jar;
-&zip;
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMQbS7ipI/AAAAAAAAAY4/xXDc9VVk87A/s800/ExpandablePanel.png)

//#screenshot
#ref(http://lh5.ggpht.com/_9Z4BYR88imo/TQTMQbS7ipI/AAAAAAAAAY4/xXDc9VVk87A/s800/ExpandablePanel.png)

**サンプルコード [#l8c5ce79]
* サンプルコード [#l8c5ce79]
#code(link){{
public void initComps(java.util.List<ExpansionPanel> list, ExpansionEvent e) {
  setVisible(false);
  centerBox.removeAll();
  northBox.removeAll();
  southBox.removeAll();
  ExpansionPanel es = (ExpansionPanel) e.getSource();
  boolean flag = false;
  for(ExpansionPanel exp: list) {
    if(exp==es && exp.isSelected()) {
      centerBox.add(exp);
      flag = true;
    }else if(flag) {
      exp.setSelected(false);
      southBox.add(exp);
    }else{
      exp.setSelected(false);
      northBox.add(exp);
    }
  }
  setVisible(true);
}
}}

**解説 [#vc8a1e60]
上記のサンプルでは、ボタンが押されるたびにそのパネルの展開と折り畳みを行い、同時にBorderLayoutの北、中央、南に各パネルを振り分けています。このため展開されるパネルはひとつだけになります。
* 解説 [#vc8a1e60]
上記のサンプルでは、ボタンが押されるたびにそのパネルの展開(子コンポーネントの追加)と折り畳み(子コンポーネントの削除)を行っています。同時に`BorderLayout`の`NORTH`、`CENTER`、`SOUTH`に各パネルを振り分けを行い、展開されるパネル一つだけが推奨サイズが無視されて任意の高さに拡張される`CENTER`に配置されます。

----
[http://common.l2fprod.com/ L2FProd.com - Common Components] にある JOutlookBar で、もっときれいにパネルの展開や折り畳みをすることができるようです(アニメーション付き)。ソースも公開されているので参考にしてみてください。
[http://common.l2fprod.com/ L2FProd.com - Common Components] にある`JOutlookBar`で、アニメーション付きでパネルの展開や折り畳みが可能です。ソースも公開されているので参考にしてみてください。

**参考リンク [#l2299305]
-[[JPanelをアコーディオン風に展開>Swing/AccordionPanel]]
* 参考リンク [#l2299305]
- [[JPanelをアコーディオン風に展開>Swing/AccordionPanel]]

**コメント [#b08f42d4]
* コメント [#b08f42d4]
#comment
#comment