6

我有一个 Java Swing 项目,它在 Windows 和 Ubuntu 上都能正常工作。我没有任何 Mac,因此无法对其进行测试;我使用 Nimbus 主题作为这个项目的标准。

现在,最近我的朋友在 Eclipse 和导出的 jar 中测试了同一个项目,它给出的错误不涉及我所做的任何特定 Java 类。

它确实显示了 GUI,但有时它会卡住,或者有时菜单丢失。

这是启动 GUI 时显示的精简版错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.apple.laf.AquaMenuPainter.paintMenuBarBackground(AquaMenuPainter.java:123)
    at com.apple.laf.AquaMenuUI.paintBackground(AquaMenuUI.java:57)
    at com.apple.laf.AquaMenuPainter.paintMenuItem(AquaMenuPainter.java:160)
    at com.apple.laf.AquaMenuUI.paintMenuItem(AquaMenuUI.java:35)
    at javax.swing.plaf.basic.BasicMenuItemUI.paint(BasicMenuItemUI.java:452)
    at javax.swing.plaf.basic.BasicMenuItemUI.update(BasicMenuItemUI.java:448)
    at javax.swing.JComponent.paintComponent(JComponent.java:752)
    at javax.swing.JComponent.paint(JComponent.java:1029)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:34)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)  

你能告诉我可能是什么问题,或者我应该在 Mac 上使用任何特定的外观主题吗?Mac 不支持 Nimbus,如果支持,我应该使用什么?

4

1 回答 1

7

我不会触摸 OS X 中的主题,它自动很棒:D

只需确保您在使用 Mac 时不要更改主题。

String osName = System.getProperty("os.name").toLowerCase();
if (!osName.contains("mac")) // if not on mac
{
   // set nimbus
}
// otherwise, do nothing. It goes automatically to Aqua.
于 2012-04-24T15:50:07.837 回答