JTable にマウス ホバー効果を実装しようとしています。(マウスがテーブルの行の上に移動すると、行の背景が変わります)。
そのために、次のように DefaultTableCellRenderer を拡張しました。
public class FileTableCellRenderer extends DefaultTableCellRenderer{
public FileTableCellRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
FileTable fileTable = (FileTable)table;
Component c = super.getTableCellRendererComponent(fileTable, value, isSelected, hasFocus, row, column);
if(!isSelected){
if(row == fileTable.getCursorRow())
{
c.setBackground(Color.pink);
c.setForeground(Color.darkGray);
}
else
{
c.setBackground(Color.white);
c.setForeground(Color.darkGray);
}
}
this.setText(value.toString());
return this;
}
}
JTable の defaultRenderer を設定すると、機能します。問題は、ブール値の列が 1 つあることです。レンダラーを設定する前に、このかわいいチェックボックスをデフォルトのレンダラーとして持っていました。
これで、「true」または「false」が表示されます。
一方、ブール列のデフォルトの BooleanRenderer をそのままにしておくと、行全体で強調表示されません...
JTable.BooleanRendererも拡張してみましたが、保護されているようで拡張すらできません。
BooleanRenderer のこのチェックボックスを残して、残りの行で背景色を変更するにはどうすればよいですか?