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

Why my color theme change when I change java 8 version (from 8u45 to 8u171)?

我有一个可以使用两个不同版本 java:

启动的应用程序

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

我用的是Swing和极德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://docs.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1

因此,当您使用此版本 java 启动 jvm 时,它会考虑 windows 8.1 os 命名并应用它的皮肤。 快速测试可以通过显示 System.getProperty("os.name") 和旧的 jdk 8u45 来支持此声明:

我支持 ose 更高版本的 java 8 修复了这个问题并检索了好的 os 名称。例如 jdk u171 :