[英]How can i implement dark and light mode in a java swing gui application?
[英]How to get macOS Mojave Style Dark Mode in Java in a Swing Application?
我想知道是否有某种方法可以在 Java 的 Swing 应用程序中获得 macOS Mojave 风格的黑暗模式?
我想在 Java Swing 应用程序的 JFrame 上获得 macOS Mojave 风格的暗模式。
请告诉我。
谢谢
阿斯拉·巴希尔·桑格
要获得深色标题栏,请使用选项-NSRequiresAquaSystemAppearance False
启动。 例如:
java -jar myapp.jar -NSRequiresAquaSystemAppearance False
# ("false", "no" or "0" will also work)
注意:许多解决方案建议编辑Info.plist
文件,但这些解决方案对我不起作用。
警告:强制执行此操作可能会导致某些框架崩溃,因此请谨慎使用。
似乎获得暗模式的官方解决方案是使用系统属性。 从JDK-8235363 开始,可从 JDK 14 及更高版本获得:
添加了一个新的系统属性:
"apple.awt.application.appearance"
来设置整个java应用程序的外观。
- 如果未设置任何值,则将使用灯光模式
- 如果设置了
"system"
值,则将使用 macOS 的当前外观- 其他可能的值是
"NSAppearanceNameAqua"
(与 light 相同)或"NSAppearanceNameDarkAqua"
(请求黑暗)参见https://developer.apple.com/documentation/appkit/nsappearancenameaqua?language=objc- 如果设置了不正确的值,则将使用灯光模式
为了获得最佳用户体验,您可能应该始终使用system
值,以匹配用户的首选设置:
-Dapple.awt.application.appearance=system
当然,测试并确保您没有自定义颜色,使用此配色方案使文本或组件不可见或难以看到。
PS:如果您还在寻找与原生 macOS 暗模式匹配的 Swing Look and Feel,请查看VAqua 。 免责声明:我从未在真正的应用程序中使用过它,但它看起来非常好,并且使用原生渲染看起来就像真实的东西。
我想,您可以尝试使用 Darcula:
https://github.com/Revivius/nb-darcula
https://github.com/bulenkov/Darcula
import com.bulenkov.darcula.*;
...
...
BasicLookAndFeel darculaLookAndFeel = new DarculaLaf();
try {
UIManager.setLookAndFeel(darculaLookAndFeel);
} catch (UnsupportedLookAndFeelException ex) {
// ups!
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.