• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTableでソート中のカラムセル色
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2008-04-07
*JTableでソート中のカラムセル色 [#q2f9c6cb]
---
title: JTableでソート中のカラムセル色
tags: [JTable, TableCellRenderer, TableRowSorter]
author: aterai
pubdate: 2008-04-07T12:47:33+09:00
description: どのカラムでソートされているかを表示するために、セルの背景色を変更します。
---
* 概要 [#q2f9c6cb]
どのカラムでソートされているかを表示するために、セルの背景色を変更します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTZ75OnPI/AAAAAAAAAkU/k4lx4c2XKK8/s800/SortColumnColor.png)

//#screenshot
#ref(http://lh6.ggpht.com/_9Z4BYR88imo/TQTTZ75OnPI/AAAAAAAAAkU/k4lx4c2XKK8/s800/SortColumnColor.png)

**サンプルコード [#r785420f]
* サンプルコード [#r785420f]
#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 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;
  }
};
}}

**解説 [#zc8cc798]
上記のサンプルでは、JTable#getSortKeys()#getSortKeys() で、ソート中のカラムを取得し、第一キーのカラムセル色を変更しています。
* 解説 [#zc8cc798]
上記のサンプルでは、`JTable#getSortKeys()#getSortKeys()`で、ソート中のカラムを取得し、第一キーのカラムセル色を変更しています。

//**参考リンク
**コメント [#qa7d6ae8]
//* 参考リンク
* コメント [#qa7d6ae8]
#comment
- このサンプルでは、`NimbusLookAndFeel`などの場合、`BooleanCellRenderer`(`JCheckBox`を使った`Boolean`用のデフォルトセルレンダラー)を使った列の背景色を変更できない。 -- &user(aterai); &new{2013-01-15 (火) 16:33:54};

#comment