Java 自定义TableCellRenderer被Look忽略(&;感觉

Java 自定义TableCellRenderer被Look忽略(&;感觉,java,swing,jtable,look-and-feel,nimbus,Java,Swing,Jtable,Look And Feel,Nimbus,我有一个JTable,我为它提供了一个定制的TableCellRenderer,它根据数值(0)将数值单元格的颜色设置为红色/灰色/绿色 但是,当我使用Nimbus L&F时,label.setForeground()方法被忽略:调用label.getForeground()时,我可以看到数字有正确的颜色,例如红色,但在屏幕上它是黑色的。如果我拆下L&F,它就可以正常工作 有没有办法温和地要求L&F接受对该单元格使用我的颜色? ps:我知道法律顾问很清楚L&F可能会忽略这个电话,所以我正在寻找解

我有一个JTable,我为它提供了一个定制的TableCellRenderer,它根据数值(0)将数值单元格的颜色设置为红色/灰色/绿色

但是,当我使用Nimbus L&F时,
label.setForeground()
方法被忽略:调用
label.getForeground()
时,我可以看到数字有正确的颜色,例如红色,但在屏幕上它是黑色的。如果我拆下L&F,它就可以正常工作

有没有办法温和地要求L&F接受对该单元格使用我的颜色?

ps:我知道法律顾问很清楚L&F可能会忽略这个电话,所以我正在寻找解决办法。

  • 使用
    JLabel
    ,思考变得复杂

  • 如果要使用
    组件
    ,则无需覆盖
    NimbusDefaults
    Painter

  • 使用
    Nimbus
    NimbusDefaults
    渲染器
    ,因为我还有另一个最喜欢的L&F

  • (如果没有来自JCheckBox的NimbusDefaults,这个问题在这个论坛上被解决了好几次)

好的,多亏了,我意识到我使用的是
ColorUIResource
而不是
Color
。换言之:

label.setForeground(Color.red); //works
label.setForeground(new ColorUIResource(Color.red)); //doesn't work

我不知道为什么一个有效而另一个无效(
Color
ColorUIResource
的直接超类),但问题解决了。

上次我听说,Nimbus被认为是非常有缺陷的。@AndrewThompson你能详细说明/提供参考吗?试试我的结果和kleopatra的评论。@AndrewThompson好的,谢谢;假设我仍然需要使用Nimbus,有没有办法在这个特定的实例中覆盖它的默认行为?我不确定。我从来没有深入研究过PLAF的本质,我只是在它们工作时使用它们。这不是问题所在,但它帮助我解决了问题!请看我的答案。答案是+1,但方向不对,为了更安全,您必须覆盖,否则您可能会成为下一个谈论Buggy Nimbus的人,请注意,我同意Nimbus不好,因为开发进度在第一节的某个地方结束:-)
label.setForeground(Color.red); //works
label.setForeground(new ColorUIResource(Color.red)); //doesn't work