Swing/SortColumnColor のバックアップ差分(No.7)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - 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)
- 14 (2025-06-19 (木) 12:41:37)
- 15 (2025-06-19 (木) 12:43:47)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: SortColumnColor title: JTableでソート中のカラムセル色 tags: [JTable, TableCellRenderer, TableRowSorter] author: aterai pubdate: 2008-04-07T12:47:33+09:00 description: どのカラムでソートされているかを表示するために、セルの背景色を変更します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTZ75OnPI/AAAAAAAAAkU/k4lx4c2XKK8/s800/SortColumnColor.png --- * 概要 [#summary] どのカラムでソートされているかを表示するために、セルの背景色を変更します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTZ75OnPI/AAAAAAAAAkU/k4lx4c2XKK8/s800/SortColumnColor.png) * サンプルコード [#sourcecode] #code(link){{ 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; } }; }} * 解説 [#explanation] 上記のサンプルでは、`JTable#getSortKeys()#getSortKeys()`でソート中のカラムを取得し、第`1`キーになっているカラムのセル背景色を変更しています。 上記のサンプルでは、`JTable#getSortKeys()#getSortKeys()`でソート中のカラムを取得し、第`1`ソートキーになっているカラムのセル背景色を変更しています。 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/RowSorter.html#getSortKeys-- RowSorter#getSortKeys() (Java Platform SE 8)] * コメント [#comment] #comment - このサンプルでは、`NimbusLookAndFeel`などの場合、`BooleanCellRenderer`(`JCheckBox`を使った`Boolean`用のデフォルトセルレンダラー)を使った列の背景色を変更できない。 -- &user(aterai); &new{2013-01-15 (火) 16:33:54}; #comment