5

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

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

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

替代文字 http://img710.imageshack.us/img710/8735/buttonsoc.png

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

我正在使用 Java 1.6

提前致谢!

4

1 回答 1

8

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

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

于 2010-06-08T18:45:07.510 回答