2022-11-03 (木) 20:50:58
  • category: swing folder: AccordionPanel title: JPanelをアコーディオン風に展開 tags: [JPanel, BorderLayout] author: aterai pubdate: 2004-11-08T01:08:01+09:00 description: JPanelの展開、折り畳みをアコーディオン風に行います。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTHVHwFBII/AAAAAAAAARA/QX4AmSbPoHs/s800/AccordionPanel.png

概要

JPanelの展開、折り畳みをアコーディオン風に行います。
http://terai.xrea.jp/swing/accordionpanel/screenshot.png

サンプルコード

View in GitHub: Java, Kotlin

解説

  • 各パネルに配置されたタイトルラベルがクリックされた場合、JPanel#setVisible(boolean)メソッドを使用してパネルの表示・非表示を切り替え
  • パネルを非表示にするだけではその高さが更新されないので以下のようにJPanel#getPreferredSize()メソッドもオーバーライド
    #spanend
    #spanadd
    @Override public Dimension getPreferredSize() {
    #spanend
      Dimension d = label.getPreferredSize();
      if (panel.isVisible()) {
        d.height += panel.getPreferredSize().height;
      }
      return d;
    #spanadd
    }
    #spanend
    #spanadd
    

参考リンク

コメント