2012-04-24 20 views
5

WindowsとUbuntuの両方でうまく動作するJava Swingプロジェクトがあります。私はMacを持っていなかったので、私はそれをテストすることができませんでした。私はこのプロジェクトの標準としてNimbusテーマを使用しました。Macで起動したときにSwing GUIがエラーで表示または表示されない

最近、私の友人は同じプロジェクトを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上で使用されなければならないテーマを感じることができました? NimbusはMacでサポートされていませんか?もしそうなら、私は何を使うべきですか?

+0

私がテーマを「Aqua」に変更すると作業が開始されるので、私の質問はむしろ削除して、根本的なOSがMACの場合はJavaで検出する方法を尋ねたいと思いますか? – Johnydep

+1

IMHO、あなたはMacでルックアンドフィールに触れることはありません。 AppleのAquaテーマは素晴らしいです。アップルはそれをあなたがルックアンドフィールを設定する必要がないようにしました。 Sun Swing Metalの代わりに自動的にAquaになります。 –

+0

@MartijnCourteaux、真実ですが、私は明らかにLook&Feelを "Nimbus"に設定しているときに、MAC上で実行されている同じコードで問題を横断していますか、この割り当てを削除する必要がありますか? – Johnydep

答えて

6

私は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. 
関連する問題