使用 Netbeans 平台应用程序 (FlatLaF) 设置标题栏的颜色

Setting the Color of the Title Bar with Netbeans Platform Application (FlatLaF)

我目前正在开发使用 com.formdev.flatlaf.FlatLightLaf 作为外观的 Netbeans 平台应用程序。该应用程序在 Windows 10 下使用 Java 11 和 运行。

我现在想更改 TitlePane 的颜色。可以通过更改 UIManager 中的属性来全局更改整个应用程序特定元素(如 jPanel 等)的颜色。 因此,我尝试更改 UIManager.getDefaults()UIManager.getLookAndFeelDefaults() 中的许多 background-color 特定设置。例如,将 TitlePane.background 属性 更改为 UIManager.put("TitlePane.background", new ColorUIResource(100, 100, 100));。 然而,我更改的数十个属性中的 none 完全有效。

虽然使用 com.formdev.flatlaf.FlatDarkLaf(暗模式).

如果有人知道需要更改哪些属性才能更改 Netbeans 平台应用程序中标题窗格的颜色,我将非常感谢任何形式的帮助!

我相信我找到了罪魁祸首。 在最近发布的 Netbeans 中,引入了为 FlatLaF 设置“TitlePane.unifiedBackground”的选项。 但是设置UIManager.put("TitlePane.unifiedBackground", true);时会出现上述问题,我实际上无法设置TitlePane的背景颜色。

如Netbeans源码中classFlatLFCustoms(https://github.com/apache/netbeans/blob/12.4/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java)的方法updateUnifiedBackground()所示,titlePane的颜色应该通过调整属性“Panel.background”。 然而,这似乎无法正常工作。

解决方法似乎是设置 UIManager.put("TitlePane.unifiedBackground", false);,然后将“TitlePane.background”设置为所需的颜色。 如果您仍然想要统一的 TitlePane 外观,您可以通过将“Panel.background”和“Toolbar.background”设置为相同的颜色来实现。

实际上,这看起来与为 TitlePane 设置 unifiedBackground 相同,只是现在您可以更改颜色。 希望这对遇到同样问题的人有所帮助。

使用此代码:-

JFrame.setDefaultLookAndFeelDecorated(true);
frame.getRootPane().putClientProperty("JRootPane.titleBarBackground", new Color(23,180,252));
       frame.getRootPane().putClientProperty("JRootPane.titleBarForeground", Color.white);