2010-06-08 10 views
5

sto costruendo un'applicazione in Java Swing e sto usando il seguente codice per dare l'interfaccia utente di un sistema operativo nativo guardanoswing interfaccia utente non ha sistema operativo nativo guardare

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

Su OS X, lo sguardo va bene , ma su Windows (XP e 7) i pulsanti hanno questo aspetto.

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

Ho usato questo codice esattamente lo stesso su altri progetti e funziona benissimo. Ma in questo particolare progetto ottengo un aspetto completamente diverso.

Sto usando Java 1.6

Grazie in anticipo!

+0

Quale versione di Java stai usando? –

+2

Quello che hai pubblicato dovrebbe funzionare, hai guardato http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatic? –

+0

@Romain - Ecco da dove ho preso il codice e ha funzionato prima. Ora sorprendentemente ha dato un aspetto diverso. L'ho anche testato su sistemi diversi con lo stesso risultato. –

risposta

8

È possibile creare gli elementi della GUI prima dell'impostazione effettiva di L & F? Se hai già creato (ad esempio) istanze di JButton e hai chiamato metodi su di loro, esse allocano il loro peer UI - le modifiche a L & F non influenzeranno le istanze già create.

Questo spiegherebbe perché funziona su Mac (il L & F è impostato su Mac su Apple JVM IIRC), ma non su Windows. Puoi testarlo rapidamente se sposti l'impostazione di L & F direttamente nel tuo metodo principale come la prima chiamata (questo presupponendo che la tua classe principale NON contenga istanze di GUI inizializzate staticamente, ovviamente).

+0

Grazie! Era così. Mi risparmi un sacco di dolore. –

Problemi correlati