2010-06-08 8 views
5

Je construis une application en java swing et je suis en utilisant le code suivant pour donner l'interface utilisateur d'un système d'exploitation natif regarderUI Swing n'a pas OS natif regarder

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

Sur OS X, le look est très bien , mais sur les fenêtres (XP et 7), les boutons ressemblent à ceci.

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

J'ai utilisé ce même code sur d'autres projets et il fonctionne très bien. Mais dans ce projet particulier, j'ai un regard complètement différent. J'utilise Java 1.6

Merci d'avance!

+0

Quelle version de Java utilisez-vous? –

+2

Ce que vous avez posté devrait fonctionner, Avez-vous regardé http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatic? –

+0

@Romain - C'est de là que vient le code et ça marche avant. Maintenant, étonnamment, il donne un look différent. Je l'ai également testé sur différents systèmes avec le même résultat. –

Répondre

8

Etes-vous en train de créer vos éléments GUI avant de définir L & F? Si vous avez déjà créé (par exemple) des instances JButton et des méthodes appelées sur celles-ci, elles affectent leur homologue UI - les modifications au L & F après cela n'affecteront pas les instances déjà créées.

Cela expliquerait pourquoi cela fonctionne sur Mac (le L & F par défaut à Mac sur Apple JVM IIRC), mais pas sur Windows. Vous pouvez le tester rapidement si vous déplacez le paramètre L & F directement dans votre méthode principale dès le premier appel (en supposant que votre classe principale ne contienne PAS d'instances GUI initialisées statiquement bien sûr).

+0

Merci! C'était ça. Vous me sauvez beaucoup de douleur. –