0

我的环境是JDK6。我在 Win7 和 Win2003 中测试我的代码都使用相同的 JRE。

我使用代码“UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");”安装了 JAVA WindowsLookAndFeel。

我认为安装 WindowsLookAndFeel 后 UI 在 Win7 和 Win2003 中的行为应该一致。我认为它应该不同于使用与操作系统相关的代码“UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());”。但事实是,UI在Win7中看起来像Win7,在Win2003中看起来像Win2003。我阅读了 WindowsLookAndFeel 的源代码,发现如果 Windows NT 版本低于 4.0,WindowsLookAndFeel 将使用 WindowsClassicLookAndFeel 代替。但是Win2003的windows NT版本是5.2。

甚至 CrossPlatformLookAndFeelClassName 在 Win7 和 Win2003 中也有不同的 java 外观。

你能解释一下吗?我真的很困惑。

通过安装 WindowsLookAndFeel,我可以在不同的 Windows 操作系统上拥有相同的用户界面吗?谢谢你。

4

1 回答 1

2

我认为安装 WindowsLookAndFeel 后 UI 在 Win7 和 Win2003 中的行为应该一致。

这个假设是不正确的。Oracle 教程是这样说的:

“对于 Windows,系统 L&F 是“Windows”,它模仿正在运行的特定 Windows 操作系统(经典 Windows、XP 或 Vista)的 L&F。

...这就是WindowsLookAndFeel实现的。

甚至 CrossPlatformLookAndFeelClassName 在 Win7 和 Win2003 中也有不同的 java 外观。

该教程是这样说的:

“CrossPlatformLookAndFeel——这是在所有平台上看起来都一样的“Java L&F”(也称为“Metal”)。它是 Java API (javax.swing.plaf.metal) 的一部分,并且是在以下情况下使用的默认值你在代码中什么也不做来设置不同的 L&F。”

我认为最好将其表述为“......旨在在所有平台上看起来都一样”。实际上,要让 UI 跨平台看起来相同是非常困难的。

另一种可能性是您(以某种方式)在不同版本的 Java 和/或平台中选择了不同的默认外观;例如金属对海洋对雨云。

最后,您可能只是期望过高。Win2003 没有被列为 Java 7 支持的平台。它支持 Java 6,但显然 Sun / Oracle 不会优先考虑让 UI 一致性完美适用于旧版 Windows 平台取消支持。

于 2013-04-28T03:23:09.207 回答