Swing/SortColumnColor のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SortColumnColor へ行く。
- title: JTableでソート中のカラムセル色 tags: [JTable, TableCellRenderer, TableRowSorter] author: aterai pubdate: 2008-04-07T12:47:33+09:00 description: どのカラムでソートされているかを表示するために、セルの背景色を変更します。
概要
どのカラムでソートされているかを表示するために、セルの背景色を変更します。
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 sorter = getRowSorter();
if(sorter!=null) {
java.util.List list = sorter.getSortKeys();
if(list.size()>0) {
RowSorter.SortKey key0 = (RowSorter.SortKey)list.get(0);
if(column==convertColumnIndexToView(key0.getColumn())) {
return true;
}
}
}
return false;
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTable#getSortKeys()#getSortKeys()
で、ソート中のカラムを取得し、第一キーのカラムセル色を変更しています。