2

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

  • 使用 8u45,我的应用程序得到蓝色阴影 应用蓝色
  • 使用 8u171,我的应用程序得到白色阴影 应用白色

我检查了应用程序中的lookandfile init,但它似乎并没有影响这种行为。

我使用 Swing 和 Jide 3.6.0 库

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

谢谢你的帮助 :)

编辑 :

该应用程序在 Windows 上运行。

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

4

1 回答 1

1

它链接到系统属性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 操作系统名称并应用其皮肤。快速测试可以通过使用旧 jdk 8u45 显示 System.getProperty("os.name") 来支持此语句: System.getProperty(

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

System.getProperty(

于 2019-11-05T13:50:43.300 回答