概要

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

サンプルコード

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

解説

上記のサンプルでは、以下の手順でタブのソートを行っています。タブを追加、削除、ダブルクリックで名前変更などが可能なので、確認してみてください。

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

参考リンク

コメント