我目前正在开发一个 GUI 繁重的应用程序,该应用程序使用 JInternalFrame 在一个 JDesktopPane 实例中打开多个较小的窗口,并且我正在尝试个性化 Nimbus 外观的外观。我可以轻松更改主要颜色和次要颜色,但是当我尝试更改单个组件时遇到了麻烦,当前的罪魁祸首是 JLabel 文本。
这是我用来设置 LnF 和自定义它的方法:
(如果我把代码块搞砸了,请提前道歉)
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);
}
现在,我正在尝试将应用程序中每个 JLabel 上的文本设置为白色,但我似乎无法确定执行此操作的特定组件,即使使用这个方便的列表也是如此。
添加
UIManager.getLookAndFeelDefaults().put("InternalFrame.foreground", Color.WHITE);
不起作用。
也没有
UIManager.getLookAndFeelDefaults().put("Label.foreground", Color.WHITE);
我难住了。这显然是可行的,因为我可以
UIManager.put("text", Color.WHITE);
在设置外观之前通过添加将所有文本更改为白色。但是鉴于这种情况,我只需要 JLabel 文本是白色的,而不是绝对每条文本。
先感谢您。如果你能解释为什么我会遇到这个问题(或者指向我解释原因的适当资源),我很乐意看到它。我在其他组件上也遇到了类似的问题,但我希望如果我能深入了解这个问题,我可以找出其他组件。