简介
我必须使用NetBeans平台和JavaFX 11编写胖客户端。其中一个要求是为应用程序提供默认的深色主题。因此,如果应用程序的用户按下深色模式按钮,应用程序的GUI必须使用深色主题。
问题
虽然如何设置JFX组件的样式(通过CSS文件)对我来说很明显,但CSS文件不会对NetBeans平台的组件(如菜单栏)产生影响,因为它们是基于Swing的。例如,场景对象中的JavaFX组件的样式为深色,但NetBeans菜单栏仍然为浅色。
问题
如何以编程方式更改NetBeans平台组件的样式(就像您在Web开发中使用CSS或在JavaFX中使用CSS支持一样)?
2条答案
按热度按时间lzfw57am1#
平台中有一个嵌入式暗LAF(至少在我使用的NB 12中),名为FlatDarkLaf,它看起来不错。
为了使用它,您需要在
ModuleInstall
子类的validate()
方法中添加以下代码,以便在启动过程中尽早完成。若要切换回默认主题:
我不知道一个(简单)的方式来改变LAF不重新启动。
要获得更完整的示例代码,请查看
UISettings
Netbeans模块中GitHub上的应用程序JJazzLab-X。针对Netbeans 12.5进行编辑
不需要调用
installLookAndFeel()
,更新NbPreferences
就足够了。用于更新
NbPreferences
的模块还应依赖于非APINetbeans平台模块FlatLaf Look and Feel
。如果您的Netbeans平台应用程序使用Netbeans品牌(例如自定义图标和闪屏),它会在您的品牌目录中创建
frame.gif
等文件。但在运行时,如果您运行FlatDarkLaf等暗主题,Netbeans会希望将图标命名为frame_dark.gif
,因此您应该重命名它们。有关详细信息,请参阅ImageUtilities.loadImage()
的javadoc。fzwojiic2#
为了完整起见,我添加了解决问题的代码片段: