0

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 のこのチェックボックスを残して、残りの行で背景色を変更するにはどうすればよいですか?

4

1 に答える 1