Java JTable-为所选行着色

Java JTable-为所选行着色,java,colors,jtable,Java,Colors,Jtable,我找遍了,但似乎找不到类似的答案 我想给选定的行上色,同时给其他行永久上色。 i、 e使总计列始终为灰色,但动态地使选定行为灰色 我在努力 JTable table = new JTable(model) { public Component prepareRenderer(TableCellRenderer renderer, int index_row, int index_col) { Component comp = super.prepareRe

我找遍了,但似乎找不到类似的答案

我想给选定的行上色,同时给其他行永久上色。 i、 e使总计列始终为灰色,但动态地使选定行为灰色

我在努力

JTable table = new JTable(model) {
        public Component prepareRenderer(TableCellRenderer renderer, int index_row, int index_col) {
            Component comp = super.prepareRenderer(renderer, index_row, index_col);
            //odd col index, selected or not selected
            if(isCellSelected(index_row, index_col)){
               comp.setBackground(Color.GRAY);  
            }
            if (index_col == 34) {
                comp.setBackground(Color.GRAY);                   
            } else {
                comp.setBackground(Color.WHITE);
                setSelectionForeground(Color.BLUE);

                setSelectionBackground(Color.GRAY); // Thought this would work but has no affect.
                // comp.setFont(new Font("Serif", Font.BOLD, 12));

            }
            return comp;
        }
    };

但是它并没有改变所选行的背景色,只是改变了整行的背景色。

我不确定,但我认为如果(isCellSelected(index\u Row,index\u col))

块这可以解决您的问题:

...
if (isCellSelected(index_row, index_col)){
    comp.setBackground(Color.GRAY);  
} else {
    if (index_col == 34) {
        comp.setBackground(Color.GRAY);                   
    } else {
        comp.setBackground(Color.WHITE);
    }
}
...

100%. 杰出的这让我烦了一阵子。非常感谢。