• category: swing folder: SortTabs title: JTabbedPaneのタブをソート tags: [JTabbedPane] author: aterai pubdate: 2006-04-24T15:47:22+09:00 description: JTabbedPaneのタブタイトルでその並び順をソートします。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTTe98QmaI/AAAAAAAAAkc/w7tzozy5FqM/s800/SortTabs.png

概要

JTabbedPaneのタブタイトルでその並び順をソートします。

サンプルコード

class SortAction extends AbstractAction {
  @Override public void actionPerformed(ActionEvent e) {
    JTabbedPane tabs = (JTabbedPane) getInvoker();
    List<ComparableTab> list = IntStream.range(0, tabs.getTabCount())
      .mapToObj(i -> new ComparableTab(tabs.getTitleAt(i), tabs.getComponentAt(i)))
      .sorted(Comparator.comparing(ComparableTab::getTitle))
      .collect(Collectors.toList());
    tabs.removeAll();
    list.forEach(c -> tabs.addTab(c.getTitle(), c.getComponent()));
  }
}

class ComparableTab {
  private final String title;
  private final Component comp;

  protected ComparableTab(String title, Component comp) {
    this.title = title;
    this.comp  = comp;
  }

  public String getTitle() {
    return title;
  }

  public Component getComponent() {
    return comp;
  }
}
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、タブを追加、削除、ダブルクリックで名前変更してタブタイトルでのソートがテスト可能です。

タブのソートは以下の手順で実行しています。

  1. ソートしたタブのリストを作成
  2. JTabbedPaneから一旦タブをすべて削除
  3. ソート済みのリストからJTabbedPaneにタブを戻す

参考リンク

コメント