Swing UI没有本机操作系统外观

Vir*_*aru 5 java swing look-and-feel uimanager

我正在java swing中构建一个应用程序,我正在使用以下代码为UI提供本机操作系统外观

try {
  UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName());
  } catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

在OS X上,外观很好,但在Windows(XP和7)上,按钮看起来像这样.

alt text http://img710.imageshack.us/img710/8735/buttonsoc.png

我在其他项目上使用了这个完全相同的代码,它工作正常.但在这个特定的项目中,我得到了完全不同的外观.

我使用的是Java 1.6

提前致谢!

Dur*_*dal 8

您是否可能在实际设置L&F之前创建GUI元素?如果您已经创建了(例如)JButton实例并对它们调用了方法,那么它们会分配它们的UI对等 - 之后对L&F的更改不会影响已创建的实例.

这可以解释为什么它适用于Mac(L&F默认使用Apple的JVM IIRC上的Mac),但不适用于Windows.如果您将L&F直接设置为main方法作为第一次调用(这假设您的主类当然不包含任何静态初始化的GUI实例),则可以快速测试.