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

时间:2012-04-24 15:43:17

标签: java macos swing look-and-feel nimbus

我有一个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,如果是,那么我应该使用什么?

1 个答案:

答案 0 :(得分: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.