Swing 具有NimbusLookAndFeel颜色问题的JTable TableCellRenderer背景

Swing 具有NimbusLookAndFeel颜色问题的JTable TableCellRenderer背景,swing,jtable,look-and-feel,tablecellrenderer,nimbus,Swing,Jtable,Look And Feel,Tablecellrenderer,Nimbus,我正在使用NimbusLookAndFeel。通过这种外观,JTable的单元格背景可以是白色和浅灰色(取决于行号)。 现在,我正在编写一些自定义单元渲染器来实现TableCellRenderer。我需要根据单元格在JTable中的位置设置这些渲染器的背景 public class MyCellRenderer extends JLabel implements TableCellRenderer{ @Override public Component getTableCel

我正在使用NimbusLookAndFeel。通过这种外观,JTable的单元格背景可以是白色和浅灰色(取决于行号)。 现在,我正在编写一些自定义单元渲染器来实现TableCellRenderer。我需要根据单元格在JTable中的位置设置这些渲染器的背景

public class MyCellRenderer extends JLabel implements TableCellRenderer{


    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

                Color bgColor = //need to retrieve the right cell background color
                setBackground(bgColor);
        return this;
    }

}

如何获得这样的颜色值?

从技术上讲,您可以通过UIManager访问颜色

   Color alternate = UIManager.getColor("Table.alternateRowColor");
实际上,我不建议从头开始写渲染器——要想把它弄清楚,有很多细节需要考虑。这些细节在SwingX中由f.i.处理(偏向me:-)

希望您自己做逻辑;-)。下面是一个工作片段(假设您希望按行而不是按列着色,但更改它将是…微不足道的):


这应该能很好地发挥作用:

public class MyRenderer extends DefaultTableCellRenderer { ... }

我别无选择。我被迫编写自定义单元格渲染器。我会试试你的解决方案,谢谢。但我不明白这样一个调用如何根据列号来区分颜色。@Overbose-应用于哪个单元格的颜色逻辑全部留给您;)注意:有选择、聚焦、可编辑、拖动等状态。。并考虑它们的所有组合。你说的“空白”是什么意思?你是对的,对不起。我指的是行而不是列。我正按照你的建议去做。我不知道(真的)。谢谢你的回答是正确的。你救了我:)再读一遍,我不完全确定你在问什么:默认情况下,Nimbus会在行而不是列的背景上加条纹。你到底遇到了什么问题?顺便说一句(吹毛求疵…)在代码片段中,您不扩展TableCellRenderer,而是实现它。
public class MyRenderer extends DefaultTableCellRenderer { ... }