Java 在Nimbus L&;中设置全局JLabel文本颜色;F

Java 在Nimbus L&;中设置全局JLabel文本颜色;F,java,swing,jlabel,nimbus,Java,Swing,Jlabel,Nimbus,我目前正在开发一个GUI密集型应用程序,它使用JInternalFrame在一个JDesktopPane实例中打开多个较小的窗口,我正在尝试个性化Nimbus外观。我可以很容易地改变原色和副色,但当我试图改变单个组件时,我遇到了麻烦,目前的罪魁祸首是JLabel文本 这是我用来设置LnF和自定义LnF的方法: (如果我阻塞了代码块,请提前道歉) 现在,我试图将应用程序中每个JLabel上的文本设置为白色,但我似乎无法确定执行此操作的特定组件,即使使用 添加 UIManager.getLookAn

我目前正在开发一个GUI密集型应用程序,它使用JInternalFrame在一个JDesktopPane实例中打开多个较小的窗口,我正在尝试个性化Nimbus外观。我可以很容易地改变原色和副色,但当我试图改变单个组件时,我遇到了麻烦,目前的罪魁祸首是JLabel文本

这是我用来设置LnF和自定义LnF的方法:

(如果我阻塞了代码块,请提前道歉)

现在,我试图将应用程序中每个JLabel上的文本设置为白色,但我似乎无法确定执行此操作的特定组件,即使使用

添加
UIManager.getLookAndFeelDefaults().put(“InternalFrame.foreground”,Color.WHITE)
没用

也没有
UIManager.getLookAndFeelDefaults().put(“Label.foreground”,Color.WHITE)

我被难住了。这显然是可行的,因为我可以通过添加
UIManager.put(“文本”,颜色.白色)在设置外观之前。但是在这种情况下,我只需要JLabel文本是白色的,而不是所有的文本


先谢谢你。如果你能解释为什么我在这个问题上有困难(或者给我指出合适的资源来解释原因),我很想看看。我在其他组件上也有类似的问题,但我希望如果我能弄清这个问题的真相,我可以找出其他的。

并且我成功地锁定了代码块。在安装了look And feel之后,尝试更改
UIManager
值……我从其他几个线程中了解到,在使用UIManager.put()安装之前,您应该更改整个UIManager值,然后您应该使用UIManager.getLookAndFeelDefaults().put()更改特定组件。考虑到我对UIManager的nimbusBase、control和text.foreground更改在安装前都能正常工作,而且我在安装后对菜单栏文本所做的更改也能正常工作,这似乎不是问题。Nimbus可能希望使用
ColorUIResource
而不是
Color
右侧,请将其视为bug,您可以仅为
JLabel.setEnabled(false)更改颜色
protected static void GUIStyle() throws Exception
{
    //Setting GUI styling

    UIManager.put("nimbusBase", new Color(255, 128, 0));
    UIManager.put("control", new Color(65, 105, 255));
    //UIManager.put("textForeground", Color.WHITE);
    try 
    {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
            {
                if ("Nimbus".equals(info.getName())) 
                {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
    }
    catch (Exception e) 
    {
       UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    }

    UIManager.getLookAndFeelDefaults().put("MenuItem[Enabled].textForeground", Color.WHITE);
    UIManager.getLookAndFeelDefaults().put("MenuBar:Menu[Enabled].textForeground", Color.WHITE);
}