1

如何更改 jTable 中选定单元格的背景?

我已经编写了表格渲染,但是它分配了所有行,并且看不到现在选择了哪种单元格。

public class MyTableRanderer extends DefaultTableCellHeaderRenderer{

    @Override
    public Component getTableCellRendererComponent(JTable jtable, Object obj,
            boolean isSelected, boolean hasFocus, int row, int col) {
        setText(obj.toString());

        if(isSelected){
            setBackground(Color.ORANGE);
            setForeground(Color.BLACK);
        } else {
            setBackground(Color.WHITE);
            setForeground(Color.BLACK);
        }

        return this;
    }

}

编辑:

public class MyTableRanderer extends DefaultTableCellHeaderRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable jtable, Object obj,
            boolean isSelected, boolean hasFocus, int row, int col) {
        setText(obj.toString());

        Component cell = super.getTableCellRendererComponent(
                jtable, obj, isSelected, hasFocus, row, col);


        if (isSelected) {
            setBackground(Color.ORANGE);
            cell.setBackground(Color.green);
            setForeground(Color.BLACK);
        } else {
            setBackground(Color.WHITE);
            setForeground(Color.BLACK);
        }

        return this;
    }
}
4

2 回答 2

1

尝试将其插入您的getTableCellRendererComponent函数中,以针对特定单元格:

Component cell = super.getTableCellRendererComponent(
   table, obj, isSelected, hasFocus, row, column);
if (isSelected) {
   cell.setBackground(Color.green);
} 
于 2013-05-25T16:48:05.230 回答
1

如何更改 jTable 中选定单元格的背景?

我已经写了表格渲染,但是它分配了所有行,并且看不到现在选择了什么样的单元格

然后需要测试这两种方法if (isSelected & hasFocus) {

于 2013-05-25T18:17:14.543 回答