【问题标题】:Swing UI does not have native OS lookSwing UI 没有原生操作系统外观
【发布时间】:2011-03-01 06:50:10
【问题描述】:

我正在使用 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

提前致谢!

【问题讨论】:

  • 您使用的是什么版本的 Java?
  • 您发布的内容应该可以工作,您看过java.sun.com/docs/books/tutorial/uiswing/lookandfeel/… 吗?
  • @Romain - 那是我从那里得到代码的地方,它以前工作过。现在令人惊讶的是它给出了不同的外观。我还在不同的系统上进行了测试,结果相同。
  • 它是否失败并打印堆栈跟踪?如果您删除 try-catch,您可能会看到一个说明问题的错误。
  • @Virat Kadaru 我假设您必须覆盖其他地方的设置。这是唯一有意义的事情。你在命令行上有什么吗?在 UIManager 上搜索一下,看看你是否在别处修改过如何?

标签: java swing look-and-feel uimanager


【解决方案1】:

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

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

【讨论】:

  • 谢谢!就是这样。你为我省去了很多痛苦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2011-11-28
  • 2012-01-30
  • 1970-01-01
  • 2011-02-27
  • 2018-07-20
  • 1970-01-01
相关资源
最近更新 更多