JTableでソート中のカラムセル色
Total: 7288
, Today: 1
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
どのカラムでソートされているかを表示するために、セルの背景色を変更します。
Screenshot
Advertisement
サンプルコード
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, Kotlin解説
上記のサンプルでは、JTable#getSortKeys()#getSortKeys()
でソート中のカラムを取得し、第1
ソートキーになっているカラムのセル背景色を変更しています。