Swing/SortColumnColor のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SortColumnColor へ行く。
- 1 (2013-01-15 (火) 16:33:54)
- 2 (2015-01-06 (火) 16:53:48)
- 3 (2015-02-26 (木) 13:59:56)
- 4 (2015-07-23 (木) 17:15:35)
- 5 (2017-04-03 (月) 19:43:07)
- 6 (2018-03-18 (日) 10:06:16)
- 7 (2020-03-18 (水) 22:13:06)
- 8 (2021-09-23 (木) 11:52:24)
- 9 (2025-01-03 (金) 08:57:02)
- 10 (2025-01-03 (金) 09:01:23)
- 11 (2025-01-03 (金) 09:02:38)
- 12 (2025-01-03 (金) 09:03:21)
- 13 (2025-01-03 (金) 09:04:02)
- category: swing
folder: SortColumnColor
title: JTableでソート中のカラムセル色
tags: [JTable, TableCellRenderer, TableRowSorter]
author: aterai
pubdate: 2008-04-07T12:47:33+09:00
description: どのカラムでソートされているかを表示するために、セルの背景色を変更します。
image:
Summary
どのカラムでソートされているかを表示するために、セルの背景色を変更します。
Screenshot

Advertisement
Source Code Examples
JTable table = new JTable(model) {
private final Color evenColor = new Color(255, 250, 250);
@Override public Component prepareRenderer(
TableCellRenderer tcr, int row, int column) {
Component c = super.prepareRenderer(tcr, row, column);
if (isRowSelected(row)) {
c.setForeground(getSelectionForeground());
c.setBackground(getSelectionBackground());
} else {
c.setForeground(getForeground());
c.setBackground(isSortingColumn(column) ? evenColor : getBackground());
}
return c;
}
private boolean isSortingColumn(int column) {
RowSorter<? extends TableModel> sorter = getRowSorter();
if (Objects.nonNull(sorter)) {
List<? extends RowSorter.SortKey> keys = sorter.getSortKeys();
if (keys.isEmpty()) {
return false;
}
if (column == convertColumnIndexToView(keys.get(0).getColumn())) {
return true;
}
}
return false;
}
};
View in GitHub: Java, KotlinExplanation
上記のサンプルでは、JTable#getSortKeys()#getSortKeys()
でソート中のカラムを取得し、第1
ソートキーになっているカラムのセル背景色を変更しています。