抱歉,我无法提供 MCVE。我已经找到了解决方案,但现在我想了解问题发生的原因。
我使用带有自定义(第三方)主题的 Syntetica L&F。该错误仅存在于此 L&F 中。我无法使用 JIDE 的 Office L&F 复制它。
我有以下代码我的扩展DefaultListCellRenderer
/**
* {@inheritDoc}
*/
@Override
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
//
// extract text and icon from my business object
// do nothing with colors
//
// here is new code which I added as I got my problem
//
if (isSelected) {
final Color c = list.getSelectionForeground();
System.out.println("color: " + c + " // " + c.getAlpha() + " // " + c.getTransparency());
setForeground(c);
}
return this;
}
打印语句的输出是:
color: javax.swing.plaf.ColorUIResource[r=255,g=255,b=255] // 255 // 1
但我得到所选行的黑色前景(错误)如果我将语句中
的最后一行更改为:if
setForeground(new Color(c.getRGB()));
我得到所选行的正确白色前景。
有人可以解释这种行为吗?
更新:看起来像 Synth L&F 或 Synthetica L&F 的错误。如果我将上面的行更改为
setForeground(new ColorUIResource(Color.WHITE));
我再次得到黑色前景。