---
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 [#summary]
`JTabbedPane`のタブタイトルでその並び順をソートします。
#download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTTe98QmaI/AAAAAAAAAkc/w7tzozy5FqM/s800/SortTabs.png)
* Source Code Examples [#sourcecode]
#code(link){{
class SortAction extends AbstractAction {
@Override public void actionPerformed(ActionEvent e) {
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());
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;
}
}
}}
* Description [#explanation]
* Description [#description]
上記のサンプルでは、タブを追加、削除、ダブルクリックで名前変更してタブタイトルでのソートがテスト可能です。
- タブのソートは以下の手順で実行
+ ソートしたタブのリストを作成
+ `JTabbedPane`から一旦タブをすべて削除
+ ソート済みのリストから`JTabbedPane`にタブを戻す
* Reference [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#removeAll-- JTabbedPane#removeAll() (Java Platform SE 8)]
* Comment [#comment]
#comment
#comment