Lorsque vous modifiez l'aspect et la convivialité avant de disposer le gui, tous les composants de l'interface utilisateur savent comment dessiner eux-mêmes. Si vous le changiez à un stade ultérieur, vous devez mettre à jour l'arborescence de l'interface utilisateur pour effectuer les modifications propagées à tous les composants:
UIManager.setLookAndFeel(lnfName);
SwingUtilities.updateComponentTreeUI(frame);
frame.pack();
Voir la java documentation à ce sujet.
Voici un exemple simple qui change le look and feel lorsque vous appuyez sur le bouton:
public static void main(String[] args) {
final JFrame frame = new JFrame("Test");
frame.add(new JButton(new AbstractAction("Press to change") {
int current = 0;
@Override
public void actionPerformed(ActionEvent e) {
LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();
LookAndFeelInfo laf = lafs[current++ % lafs.length];
try {
UIManager.setLookAndFeel(laf.getClassName());
SwingUtilities.updateComponentTreeUI(frame);
frame.pack();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
Si vous ne voulez pas pack
la frame
(changer la taille de celui-ci) il suffit d'appeler repaint
à la place.
Modifier le look and feel (comment le changer, BTW?) Affecte [JFrames nouvellement créé] (http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JFrame .html # setDefaultLookAndFeelDecorated (booléen)) – khachik