如何在Swing应用程序中以Java获得macOS Mojave Style Dark Mode?
2022-09-04 20:50:11
我想知道是否有某种方法可以在Java的摇摆应用程序中获得macOS Mojave风格的黑暗模式?
我想在Java Swing应用程序中的JFrame上获得macOS Mojave Style Dark Mode。
请让我知道。
谢谢
阿斯拉尔·巴希尔·松格
我想知道是否有某种方法可以在Java的摇摆应用程序中获得macOS Mojave风格的黑暗模式?
我想在Java Swing应用程序中的JFrame上获得macOS Mojave Style Dark Mode。
请让我知道。
谢谢
阿斯拉尔·巴希尔·松格
似乎获得黑暗模式的官方解决方案是使用系统属性。在 JDK-8235363 中,这可从 JDK 14 及更高版本获得:
添加了一个新的系统属性:用于设置整个 Java 应用程序的外观。
"apple.awt.application.appearance"
- 如果未设置值,则将使用浅色模式
- 如果设置了值,则将使用macOS的当前外观
"system"
- 其他可能的值是(与浅色相同)或(请求深色)请参阅 https://developer.apple.com/documentation/appkit/nsappearancenameaqua?language=objc
"NSAppearanceNameAqua"
"NSAppearanceNameDarkAqua"
- 如果设置的值不正确,则将使用浅色模式
若要获得最佳用户体验,可能应始终使用该值来匹配用户的首选设置:system
-Dapple.awt.application.appearance=system
当然,测试并确保你没有自己定义的颜色,这使得文本或组件不可见或难以通过这种配色方案看到。
PS:如果您还在寻找与本机macOS黑暗模式相匹配的Swing外观和感觉,请查看VAqua。免责声明:我从未在实际应用程序中使用它,但它看起来非常好,并使用本机渲染来看起来像真实的东西。
要获取深色标题栏,请使用选项启动。例如:-NSRequiresAquaSystemAppearance False
java -jar myapp.jar -NSRequiresAquaSystemAppearance False
# ("false", "no" or "0" will also work)
注意:许多解决方案建议编辑文件,但这些解决方案对我不起作用。Info.plist
警告:某些框架可能会因强制执行此操作而崩溃,因此请谨慎使用。