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