1

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

我再次得到黑色前景。

4

0 回答 0