L'exemple suivant permet de choisir un look, parmi les trois proposés par la classe LookAndFeelMenu
, et de l'appliquer à la fenêtre
en cours d'exécution. Cette fenêtre contient volontairement un certain nombre de composants graphiques afin que vous puissiez avoir une idée
un peu plus précise des visuels de chacun d'entre eux en fonction du look'n feel sélectionné. Je vous conseille d'ouvrir les noeuds du composant
Jtree
afin de faire apparaître les barres de scrolling, qui elles aussi seront décorées différement en fonction du look.
Personnelement, j'ai une préférence pour le look « Nimbus », dernier look ajouté au Java SE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JToolBar; import javax.swing.JTree; import javax.swing.SwingUtilities; import javax.swing.UIManager; class LookAndFeelMenu extends JMenu implements ActionListener { public static final String LOOK_AND_FEEL_1 = "javax.swing.plaf.nimbus.NimbusLookAndFeel"; public static final String LOOK_AND_FEEL_2 = "javax.swing.plaf.metal.MetalLookAndFeel"; public static final String LOOK_AND_FEEL_3 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; public LookAndFeelMenu() { super("Look and feel"); setMnemonic('L'); JMenuItem nimbus = new JMenuItem("Nimbus"); nimbus.setMnemonic('N'); nimbus.addActionListener(this); this.add(nimbus); JMenuItem metal = new JMenuItem("Metal"); metal.setMnemonic('M'); metal.addActionListener(this); this.add(metal); JMenuItem windows = new JMenuItem("Windows"); windows.setMnemonic('W'); windows.addActionListener(this); this.add(windows); } public void actionPerformed(ActionEvent event) { String newLook; switch( event.getActionCommand() ) { case "Nimbus": newLook = LOOK_AND_FEEL_1; break; case "Metal": newLook = LOOK_AND_FEEL_2; break; default: newLook = LOOK_AND_FEEL_3; } try { // On change le look and feel en cours UIManager.setLookAndFeel( newLook ); // On applique ce nouveau look à la fenêtre intégral SwingUtilities.updateComponentTreeUI( this.getTopLevelAncestor() ); } catch( Exception exception ) { exception.printStackTrace(); } } } public class TestLookAndFeel extends JFrame { public TestLookAndFeel() { super( "Look'n feel sample" ); this.setDefaultCloseOperation( DISPOSE_ON_CLOSE ); this.setSize( 600, 400 ); // --- Mise en place d'une barre de menu --- JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu( "File" ); file.setMnemonic( 'f' ); JMenuItem open = new JMenuItem( "Open" ); open.setMnemonic( 'o' ); file.add( open ); menuBar.add( file ); menuBar.add(new LookAndFeelMenu()); this.setJMenuBar( menuBar ); // --- On met quelques composants visuels dans la fenêtre --- JPanel contentPane = (JPanel) this.getContentPane(); JToolBar toolBar = new JToolBar(); toolBar.add( new JButton( "Click me") ); toolBar.add( new JTextField( "Edit me") ); toolBar.add( new JCheckBox( "Check me") ); contentPane.add( toolBar, BorderLayout.NORTH ); JScrollPane scrollPane = new JScrollPane( new JTree() ); scrollPane.setPreferredSize( new Dimension( 140, 0 ) ); contentPane.add( scrollPane, BorderLayout.WEST ); contentPane.add( new JScrollPane( new JTextArea() ), BorderLayout.CENTER ); contentPane.add( new JLabel( "A status bar" ), BorderLayout.SOUTH ); } public static void main( String[] args ) { TestLookAndFeel frame = new TestLookAndFeel(); frame.setVisible( true ); } } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :