2010-06-08 7 views
5

Ich baue eine Anwendung in Java Swing und ich bin mit dem folgenden Code die Benutzeroberfläche eine native OS aussehenSwing-UI hat keine native OS aussehen

try { 
    UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e) { 
    e.printStackTrace(); 
} 

Auf einem OS X, das Aussehen ist in Ordnung , aber auf Windows (XP und 7) sehen die Buttons so aus.

alt text http://img710.imageshack.us/img710/8735/buttonsoc.png

Ich habe diese exakt gleichen Code auf anderen Projekten verwendet und es funktioniert gut. Aber in diesem speziellen Projekt bekomme ich ein komplett anderes Aussehen.

Ich benutze Java 1.6

Vielen Dank im Voraus!

+0

Welche Java-Version verwenden Sie? –

+2

Was Sie gepostet haben, sollte funktionieren, haben Sie http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatische gesucht? –

+0

@Romain - Das ist, wo ich den Code von bekam und es vorher funktioniert hat. Jetzt gibt es überraschenderweise ein anderes Aussehen. Ich habe es auch auf verschiedenen Systemen mit dem gleichen Ergebnis getestet. –

Antwort

8

Erstellen Sie möglicherweise Ihre GUI-Elemente, bevor Sie tatsächlich die L & F setzen? Wenn Sie bereits JButton-Instanzen und aufgerufene Methoden für sie erstellt haben, weisen sie ihre UI-Peer-Änderungen dem L & F zu, nachdem dies die bereits erstellten Instanzen nicht beeinflusst.

Dies würde erklären, warum es auf Mac funktioniert (die L & F standardmäßig Mac auf Apples JVM IIRC), aber nicht auf Windows. Sie können dies schnell testen, wenn Sie die Einstellung L & F direkt beim ersten Aufruf in Ihre main-Methode verschieben (vorausgesetzt, Ihre Hauptklasse enthält natürlich KEINE statisch initialisierten GUI-Instanzen).

+0

Danke! Das war's. Du ersparst mir viel Schmerz. –