Swing/SortableTable のバックアップ(No.30)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SortableTable へ行く。
- 1 (2005-02-24 (木) 03:53:31)
- 2 (2005-02-25 (金) 11:30:57)
- 3 (2005-02-25 (金) 11:30:57)
- 4 (2005-03-11 (金) 08:08:12)
- 5 (2005-03-11 (金) 12:20:40)
- 6 (2005-03-11 (金) 12:20:40)
- 7 (2005-03-11 (金) 12:20:40)
- 8 (2005-04-28 (木) 04:32:58)
- 9 (2005-10-08 (土) 21:41:16)
- 10 (2006-01-05 (木) 14:54:54)
- 11 (2006-02-27 (月) 16:27:11)
- 12 (2006-11-24 (金) 15:44:52)
- 13 (2007-04-26 (木) 11:31:47)
- 14 (2007-04-26 (木) 14:34:35)
- 15 (2007-07-26 (木) 14:27:36)
- 16 (2007-10-23 (火) 21:39:02)
- 17 (2012-07-12 (木) 14:05:48)
- 18 (2012-07-13 (金) 17:35:04)
- 19 (2013-04-02 (火) 19:09:17)
- 20 (2014-09-01 (月) 20:00:16)
- 21 (2014-11-07 (金) 03:14:35)
- 22 (2015-12-08 (火) 16:07:15)
- 23 (2016-01-12 (火) 17:59:42)
- 24 (2017-03-31 (金) 16:14:21)
- 25 (2017-04-04 (火) 14:17:08)
- 26 (2018-03-15 (木) 13:16:10)
- 27 (2018-06-27 (水) 19:27:31)
- 28 (2019-05-11 (土) 16:02:03)
- 29 (2021-02-10 (水) 11:00:36)
- 30 (2024-04-18 (木) 14:47:21)
- category: swing folder: SortableTable title: JTableのソート tags: [JTable, JTableHeader] author: aterai pubdate: 2004-01-05 description: JTableのカラムヘッダをクリックすることで、行表示を降順、昇順にソートします。 image:
概要
JTable
のカラムヘッダをクリックすることで、行表示を降順、昇順にソートします。以下のサンプルは、SortableTableExampleを参考にして作成しています。
Screenshot
Advertisement
サンプルコード
class SortableTableModel extends DefaultTableModel {
public SortableTableModel(String[] str, int row) {
super(str, row);
}
public void sortByColumn(int column, boolean isAscent) {
Collections.sort(getDataVector(), new ColumnComparator(column, isAscent));
fireTableDataChanged();
}
}
class ColumnComparator implements Comparator<Object>, Serializable {
private static final long serialVersionUID = 1L;
protected final int index;
protected final boolean ascending;
protected ColumnComparator(int index, boolean ascending) {
this.index = index;
this.ascending = ascending;
}
@SuppressWarnings("unchecked")
@Override public int compare(Object one, Object two) {
if (one instanceof List && two instanceof List) {
Comparable<Object> o1 = (Comparable<Object>) ((List<Object>) one).get(index);
Comparable<Object> o2 = (Comparable<Object>) ((List<Object>) two).get(index);
int c = Objects.compare(
o1, o2, Comparator.nullsFirst(Comparator.<Comparable<Object>>naturalOrder()));
return c * (ascending ? 1 : -1);
}
return 0;
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、各カラムヘッダのクリックでソート可能になっています。
- 複数の列をキーにしてソートしたい場合は
TableSorter.java
が利用可能 JDK 1.6.0
からJTable
のソートが標準機能として追加された
参考リンク
SortableTableExample- Sorting and Otherwise Manipulating Data - How to Use Tables (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Swing Components)