Swing/SortTabs の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/SortTabs へ行く。
- Swing/SortTabs の差分を削除
--- 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 --- * 概要 [#summary] `JTabbedPane`のタブタイトルでその並び順をソートします。 #download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTTe98QmaI/AAAAAAAAAkc/w7tzozy5FqM/s800/SortTabs.png) * サンプルコード [#sourcecode] #code(link){{ 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))) JTabbedPane t = (JTabbedPane) getInvoker(); List<ComparableTab> list = IntStream.range(0, t.getTabCount()) .mapToObj(i -> new ComparableTab(t.getTitleAt(i), t.getComponentAt(i))) .sorted(Comparator.comparing(ComparableTab::getTitle)) .collect(Collectors.toList()); tabs.removeAll(); list.forEach(c -> tabs.addTab(c.getTitle(), c.getComponent())); t.removeAll(); list.forEach(c -> t.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; } } }} * 解説 [#explanation] 上記のサンプルでは、タブを追加、削除、ダブルクリックで名前変更してタブタイトルでのソートがテスト可能です。 - タブのソートは以下の手順で実行 + ソートしたタブのリストを作成 + `JTabbedPane`から一旦タブをすべて削除 + ソート済みのリストから`JTabbedPane`にタブを戻す * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#removeAll-- JTabbedPane#removeAll() (Java Platform SE 8)] * コメント [#comment] #comment #comment