Java 在Mac上启动时,Swing GUI不显示或显示错误

Java 在Mac上启动时,Swing GUI不显示或显示错误,java,macos,swing,look-and-feel,nimbus,Java,Macos,Swing,Look And Feel,Nimbus,我有一个JavaSwing项目,它可以在Windows和Ubuntu上正常工作。我没有任何Mac电脑,因此无法测试它;我使用了Nimbus主题作为这个项目的标准 最近,我的朋友在Eclipse和导出的jar中测试了同一个项目,它给出的错误没有引用我所创建的任何特定Java类 它确实显示GUI,但有时会粘住,或者有时会缺少菜单 以下是启动GUI时显示的错误的精简版本: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExcep

我有一个JavaSwing项目,它可以在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吗?如果支持,我应该使用什么

我不会在OSX中触及这个主题,它是非常棒的: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.

好的,如果我将主题改为“Aqua”,它就开始工作了,所以我的问题应该被删除,我想问一下如何在java中检测,如果底层操作系统是MAC,那么你不会在MAC上触摸外观和感觉。苹果的水族主题太棒了。苹果这样做,你甚至不必设置外观和感觉。它将自动变为Aqua而不是Sun Swing Metal。@MartijnCourteaux,没错,但我在MAC上运行相同的代码时遇到了问题,当时我已明确地将外观设置为“Nimbus”,还是我将不得不删除此任务??