摆动:标签前景中的白色绘制为黑色

时间:2014-07-24 11:38:33

标签: java swing paint look-and-feel listcellrenderer

抱歉,我无法提供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;
    }

print语句的输出是:

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的Bug。如果我将上面的行更改为

setForeground(new ColorUIResource(Color.WHITE));

我再次获得黑色前景。

0 个答案:

没有答案