java - 为什么当我更改 Java 8 版本(从 8u45 到 8u171)时我的颜色主题会改变?

标签 java swing java-8 jide

我有一个可以使用两个不同版本的 java 启动的应用程序:

  • 使用 8u45,我的应用程序变成了蓝色阴影 application blue
  • 使用 8u171,我的应用程序获得白色阴影 application white

我检查了应用程序中的 lookandfile 初始化,但它似乎不会影响此行为。

我使用的是 Swing 和 Jide 3.6.0 库

有人知道为什么当我将 Java 版本从 8u45 升级到 8u171 时会发生这种行为吗?

感谢您的帮助:)

编辑:

应用程序正在 Windows 上运行。

我使用 com.sun.java.swing.plaf.windows.WindowsLookAndFeel,由 UIManager.getLookAndFeel() 给出

最佳答案

它链接到系统属性 os.name。自 Windows 8.1 起,GetVersionEx 函数已被弃用,而旧版本的 java 8(例如 8u45)基于此函数来提供此系统属性。

更多信息:https://learn.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1

这样当你用这个版本的 java 启动一个 jvm 时,它会考虑 windows 8.1 操作系统名称并应用其皮肤。 快速测试可以通过使用旧的 jdk 8u45 显示 System.getProperty("os.name") 来支持此语句: System.getProperty("os.name")

我想 java 8 的更高版本修复了这个问题并检索了好的操作系统名称。例如使用 jdk u171 :

System.getProperty("os.name")

关于java - 为什么当我更改 Java 8 版本(从 8u45 到 8u171)时我的颜色主题会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187202/

相关文章:

java - Netbeans JAR 未正常运行/打开

java-8 - 当键与 Java Stream API 重复时如何添加 Map 的内部元素

JavaFX 和 RxJava-TableView 无限调用 setCellValueFactory()

java - JScrollPane 中 JTextPane 文本后面的静态图像

java - 在Java中使用静态方法共享数据库连接

java - 客户端已连接,但无法向服务器发送消息。[控制台聊天]

java - 两个未排序的列表交集作为列表返回

Java 线程崩溃但 Swing 仍在工作

java - 三元运算符在 JDK8 和 JDK10 上的行为差异

java - 为什么程序中输入错误