• 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

概要

概要

どのカラムでソートされているかを表示するために、セルの背景色を変更します。

サンプルコード

サンプルコード

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());
      c.setBackground(isSortingColumn(column) ? evenColor : getBackground());
    }
    return c;
  }
#spanadd

#spanend
  private boolean isSortingColumn(int column) {
    RowSorter sorter = getRowSorter();
    if (sorter != null) {
      List list = sorter.getSortKeys();
      if (list.size() > 0) {
        RowSorter.SortKey key0 = (RowSorter.SortKey) list.get(0);
        if (column == convertColumnIndexToView(key0.getColumn())) {
          return true;
        }
    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()で、ソート中のカラムを取得し、第一キーのカラムセル色を変更しています。

解説

上記のサンプルでは、JTable#getSortKeys()#getSortKeys()でソート中のカラムを取得し、第1ソートキーになっているカラムのセル背景色を変更しています。

コメント

参考リンク

コメント