Enormément de programmes Java destinés à des utilisateurs comportent des éléments graphiques de telle sorte que l'application soit plus conviviale et ergonomique au travers de son interface Homme-Machine (IHM).
La plateforme Java dispose de différents outils permettant de construire des interfaces utilisateurs graphiques (GUI : Graphical User Interface) sophistiquées.
Plusieurs paquetages graphiques sont fournis par Java, tels AWT (Abstract Window Toolkit) et SWING, mais
Les applications Java nécessitent l'importation du paquetage Swing par l'intermédiaire de l'instruction suivante :
import javax.swing.*;
Les applications Swing ont également souvent besoin des paquetages AWT, notamment pour la création d'interface utilisateur et la gestion événementielles des programmes.
import java.awt.*; import java.awt.event.*;
La plateforme Java permet de spécifier un aspect particulier à appliquer à une application Swing. La méthode setLookAndFeel() de la classe UIManager permet d'affecter une apparence, en fournissant un nom de classe look and feel.
// Nom de la classe Look and Feel UIManager.setLookAndFeel(nomClasseLAF); // Instance de la classe Look and Feel UIManager.setLookAndFeel(instanceClasseLAF);
Il existe plusieurs look and feel pour les applications Swing.
// Look and feel par défaut UIManager.setLookAndFeel( UIManager.getSystemLookAndFeel()); // Look and Feel de la plateforme sous-jacente UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); // Look and feel Windows UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); // Look and feel CDE/Motif UIManager.setLookAndFeel( "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); // Look and feel GTK+ UIManager.setLookAndFeel( "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); // Look and feel métal UIManager.setLookAndFeel( "javax.swing.plaf.metal.MetalLookAndFeel"); // Look and feel Macintosh UIManager.setLookAndFeel( "it.unitn.ing.swing.plaf.macos.MacOSLookAndFeel"); // look and feel Kunststoff UIManager.setLookAndFeel( "com.incors.plaf.kunststoff.KunststoffLookAndFeel");
Il est possible de préciser le look and file de l'application en passant par une instruction -Dswing.defaultlaf en ligne de commande ou en rensignant un fichier swing.properties à localiser dans le répertoire lib de Java.
Ligne de commande java -Dswing.defaultlaf=NomClasseLAF ApplicationJava Fichier : swing.properties # Swing properties swing.defaultlaf=NomClasseLAF
Le look and feel d'une inteface utilisateur peut être modifiée même si cette dernière est affichée à l'écran. Pour cela, il suffit de fournir le nouveau nom de classe LAF, puis d'utiliser la méthode updateComponentTreeUI() pour mettre à jour le composant de plus haut niveau de l'interface conformément à la nouvelle apparence. Enfin,le réaffichage correct des composants enfants dans leur container s'effectue en invoquant une méthode spécifique telle que pack() de la classe JFrame.
UIManager.setLookAndFeel(NomClasseLAF); SwingUtilities.updateComponentTreeUI(composantFrame); composantFrame.pack();
En outre, l'aspect d'une application peut être entièrement personnalisée. En d'autres mots, il est possible de créer sa propre classe Look And Feel et de l'utiliser pour habiller ses propres applications.
Exemple [voir]import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; public class Tree { static JTree tree ; public static void main(String[] args) { JFrame frame = new JFrame("Tree"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { Window win = e.getWindow(); win.setVisible(false); win.dispose(); System.exit(0); } } ); frame.getContentPane().setLayout( new BorderLayout()); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } tree = new JTree(); JScrollPane sp = new JScrollPane( tree ); frame.getContentPane().add( sp, "Center" ); frame.pack(); frame.show(); } } |