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

时间:2010-06-08 17:07:53

标签: java swing look-and-feel uimanager

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

try {
  UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName());
  } catch (Exception e) {
    e.printStackTrace();
}

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

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

我在其他项目中使用了这个完全相同的代码,它运行正常。但在这个特定的项目中,我的表情完全不同。

我正在使用Java 1.6

提前致谢!

1 个答案:

答案 0 :(得分:8)

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

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