Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 除非重新创建,否则颜色对象不能用作颜色_Java_Swing_Nimbus - Fatal编程技术网

Java 除非重新创建,否则颜色对象不能用作颜色

Java 除非重新创建,否则颜色对象不能用作颜色,java,swing,nimbus,Java,Swing,Nimbus,我正在努力寻找一个描述性的标题 我试图在我的自定义组件中使用NimbusLookAndFeel中的swing.plaf颜色。 我从UIManager得到的颜色看起来不错,但是setBackground和setForeground方法与我得到的颜色不匹配 下面的示例显示了非常奇怪的行为 package syscolorbug; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.JFrame; import

我正在努力寻找一个描述性的标题

我试图在我的自定义组件中使用NimbusLookAndFeel中的swing.plaf颜色。 我从UIManager得到的颜色看起来不错,但是setBackground和setForeground方法与我得到的颜色不匹配

下面的示例显示了非常奇怪的行为

package syscolorbug;

import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class SysColorBug {
    public static void main(String[] args) throws Exception {
        javax.swing.UIManager.
                setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");

        Color background = javax.swing.UIManager.getDefaults().
                getColor("List[Selected].textBackground"); 
        JFrame jf = new JFrame();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLayout(new FlowLayout());
        jf.setSize(400,300);
        JLabel l = new JLabel("Text");
        l.setOpaque(true);
        jf.add(l);
        System.err.println(background);
        // This needs to happen for the color to be set.
        //24: background = new Color(background.getRGB());
        System.err.println(background);
        l.setBackground(background);
        jf.setVisible(true);
    }

}
如果我把24条注释掉:它按预期工作

后台调试输出显示

DerivedColor(color=57,105,138 parent=nimbusSelectionBackground offsets=0.0,0.0,0.0,0 pColor=57,105,138

进一步的调查表明,这个问题似乎并没有影响到其他的外观和感觉

例如,在金属上LAF生产

javax.swing.plaf.ColorUIResource[r=255,g=255,b=255]
对于
“List.background”

这是灵光大道上的一只虫子吗

我非常希望避免使用superflous
background=new Color(background.getRGB())是否有简单的修复方法


Java版本是openjdk Java 1.8.0。

我在做图形时没有做太多laf,所以我不明白为什么
列表[Selected]。textBackground
将是
JLabel
的背景。默认值为
color=214217223


这似乎也与我在

上看到和读到的内容相匹配。当我做图形时,我不太会做laf,所以我不明白为什么
列表[Selected]。textBackground
将是
JLabel
的背景。默认值为
color=214217223


这似乎也与我在

中看到和读到的内容相匹配,我在JList item/CellRenderer的自定义复合组件中使用了它。该组件包含一个JLabel。我正在JList item/CellRenderer的自定义复合组件中使用它。该组件包含一个JLabel。
javax.swing.plaf.ColorUIResource[r=255,g=255,b=255]