目前我正在开发一个应用程序,但是我不知道有任何方法来检查系统是否已经处于黑暗模式。该应用程序是在Mac上使用JavaFX制作的。目前我有一个 CheckMenuItem,当检查时,使用 IF 语句加载“darkmode.css”文件。如果未选中 checkmenuitem 框,则删除该文件。
然而,我希望能够在操作系统处于黑暗模式并且不需要再次删除它时激活 css 文件,而不是检查 MenuItem。我感觉Java可能做不到这一点。如果有任何方法可以做到这一点,我将热衷于学习并对您如何实现它感兴趣。
简而言之,原生黑暗模式差不多。
小智 13
是的,有多种方法可以实现这一目标。Intellij Idea本身是用Java编写的,从版本开始她就有了os主题同步功能2020.3。
您可以使用一个名为 的库jSystemThemeDetector。您可以在Windows 10、MacOS甚至某些Linux 发行版上检测暗模式。
简单检测示例:
final OsThemeDetector detector = OsThemeDetector.getDetector();
final boolean isDarkThemeUsed = detector.isDark();
if (isDarkThemeUsed) {
//The OS uses a dark theme
} else {
//The OS uses a light theme
}
Run Code Online (Sandbox Code Playgroud)
同步示例:
final OsThemeDetector detector = OsThemeDetector.getDetector();
detector.registerListener(isDark -> {
if (isDark) {
//The OS switched to a dark theme
} else {
//The OS switched to a light theme
}
});
Run Code Online (Sandbox Code Playgroud)
没有标准的 Java API 用于确定主机的本机 UI 是否处于“深色模式”或“夜间模式”。
在UI设计方面,“深色模式”是一个相对较新的想法。据我所知,这个想法直到 2018 年才真正开始兴起;请参阅https://en.wikipedia.org/wiki/Light-on-dark_color_scheme。这是在 Swing 和 JavaFX 都稳定下来之后很久。(就 Swing 而言,是几十年后的事了!)
OpenJDK Bug 跟踪器中有一个最近(2019 年 12 月)的 RFE,用于检测主机操作系统的暗模式设置:JDK-8235460
在缺乏标准 Java API 的情况下,您可以尝试特定于操作系统的想法;例如如下所述:
对于 Android 暗/夜间模式检测支持:
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |