2012-04-24 38 views
5

Mam projekt Java Swing, który działa dobrze zarówno na systemie Windows i Ubuntu. Nie miałem żadnych komputerów Mac, więc nie mogłem go przetestować; Użyłem motywu Nimbus jako standard dla tego projektu.Swing GUI nie wyświetla się lub wyświetla z błędami po uruchomieniu na komputerze Mac

Niedawno mój przyjaciel przetestował ten sam projekt zarówno w Eclipse, jak i wyeksportowanym słoiku, i podaje błędy, które nie odnoszą się do żadnej konkretnej klasy Java, którą przygotowałem.

Pokazuje GUI, ale czasami się przykleja, a czasami brakuje menu.

Tutaj jest okrojona wersja błędów pokazane podczas uruchamiania 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) 

Mógłbyś mi powiedzieć co może być problem, czy jest jakiś specyficzny wygląd i styl motywu I należy używać na komputerze Mac ? Czy Nimbus nie jest obsługiwany na Macu, a jeśli tak, to w czym powinienem użyć?

+0

OK, jeśli zmienię motyw na "Aqua", zacznie działać, więc moje pytanie powinno zostać raczej usunięte i chcę zapytać jak wykryć w Javie, czy bazowym systemem operacyjnym jest MAC? – Johnydep

+1

IMHO, nie dotykasz wyglądu i stylu na komputerze Mac. Motyw Aqua firmy Apple jest niesamowity. Apple zrobił to w ten sposób, że nawet nie musisz ustawiać wyglądu i stylu. Będzie to automatycznie Aqua zamiast Sun Swing Metal. –

+0

@MartijnCourteaux, prawda, ale jestem uruchomiony przez problem z tym samym kodem uruchomionym na MAC, kiedy wyraźnie ustawiłem Look & Feel na "Nimbus", czy to jest to, że będę musiał usunąć to zadanie? – Johnydep

Odpowiedz

6

nie będę dotykać motyw w OS X, to jest niesamowite automatycznie: D

Wystarczy upewnić się, aby nie zmieniać tematu, gdy jesteś na 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.