TITLE:JTabbedPaneのタブをソート

JTabbedPaneのタブをソート

編集者:Terai Atsuhiro
作成日:2006-04-24
更新日:2023-04-30 (日) 12:17:36

概要

JTabbedPaneのタブをソートします。

#screenshot

サンプルコード

class SortAction extends AbstractAction {
  public SortAction(String label, Icon icon) {
    super(label,icon);
  }
  public void actionPerformed(ActionEvent evt) {
    final Vector list = makeSortedVector(tab);
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        setSortedTab(tab, list);
      }
    });
  }
  private Vector makeSortedVector(JTabbedPane t) {
    Vector l = new Vector();
    for(int i=0;i<t.getTabCount();i++) {
      l.addElement(new ComparableTab(t.getTitleAt(i), t.getComponentAt(i)));
    }
    Collections.sort(l);
    return l;
  }
  private void setSortedTab(final JTabbedPane t, final Vector l) {
    t.setVisible(false);
    t.removeAll();
    for(int i=0;i<l.size();i++) {
      ComparableTab c = (ComparableTab)l.get(i);
      t.addTab(c.title, c.comp);
    }
    t.setVisible(true);
  }
  class ComparableTab implements Comparable{
    final public String title;
    final public Component comp;
    public ComparableTab(String title, Component comp) {
      this.title = title;
      this.comp  = comp;
    }
    public int compareTo(Object o) {
      return this.title.compareTo(((ComparableTab)o).title);
    }
  }
}
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルでは、ソートしたリストを作成したあと、一旦タブをすべて削除し、リストからJTabbedPaneにタブを戻しています。

コメント