La programmation graphique et événementielle en Rajae El Ouazzani 2014-2015 La

La programmation graphique et événementielle en Rajae El Ouazzani 2014-2015 La programmation graphique et événementielle en Java [1] 2014-2015 2 Présentation Swing est la boîte à outils d'interface utilisateur de Java. Il a été développé durant l'existence de Java 1.1 et fait désormais partie des API (Automates Programmables Industrielles) centrales de Java 1.2 et supérieure. Swing, via son paquetage javax.swing (ainsi que ses nombreux sous- paquetages), fournit des classes pour représenter des éléments d'interface comme les fenêtres, des boutons, des boîtes combo, des arborescences, des grilles et des menus - toute chose nécessaire à la construction d'une interface utilisateur dans une application Java. Swing fait partie d'une collection plus vaste de logiciels baptisée JFC (Java Foundation Classes). JFC est la partie la plus volumineuse et la plus compliquée de la plate-forme Standard Java. 2014-2015 3 Plan de la partie Programmation graphique Section 1: Introduction Section 2: Les conteneurs (JFrame et JPanel) Section 3: Le composant bouton (JButton) Section 4: Les gestionnaires de placement (Layout) Section 5: Les étiquettes (JLabel) Section 6: Les images (ImageIcon) Section 7: Les composants texte (JTextComponent, JTextField, JTextArea, JPasswordField, JFormattedTextField, JEditorPane) 2014-2015 4 Section 1: Introduction 2014-2015 5 Abstract Window Toolkit (AWT) Pour comprendre Swing, il est utile de comprendre son prédécesseur AWT (Abstract Window Toolkit) issu du paquetage java.awt. AWT est une abstraction. Il est portable; ses fonctionnalités sont les mêmes pour toutes les implémentations Java. Bien que les gens s'attendent généralement à ce que leur applications aient un look- and-feel cohérent, il est souvent différent d'une plateforme à l'autre. C'est pourquoi, AWT a été conçu pour fonctionner de la même façon sur toutes les plate-formes, avec l'aspect du système natif. 2014-2015 6 Suite AWT utilise des boîtes à outils interchangeables qui interagissent avec le système de fenêtrage de l'hôte pour afficher les composants de l'interface utilisateur. Les éléments d'interface utilisateur, ou composants, sont de simples classes issues du paquetage java.awt. Il y’a la classe Frame (cadre de la fenêtre), la classe Button (bouton), la classe TextField (zone de saisie), etc. Il sera préférable d’utiliser l'interface utilisateur Swing. Toutefois, on va utiliser certains des éléments d'AWT comme la classe Color et la gestion des événements, ainsi que quelques d’autres éléments. 2014-2015 7 Les composants du paquetage java.awt 8 L'interface utilisateur Swing Swing suit une approche fondamentalement différente. Les composants de Swing sont implémentés directement dans Java, càd quelle que soit la plateforme utilisée, un bouton Swing a toujours la même apparence. Les composants Swing sont plus souples et peuvent être complétés et modifiés dans les applications. Par ailleurs, Swing propose un ensemble d'éléments d'interface plus étendu et pratique. La plupart des classes de composant Swing commencent par la lettre J : JButton, JFrame, etc. (Button et Frame en AWT). Pour retrouver ces composants Swing, il faut importer le paquetage javax.swing. 2014-2015 9 De AWT à Swing JFrame hérite de Frame. JButton, JLabel, JTextField, JMenu, etc. héritent tous de la classe de base JComponent qui fait parti de Swing. JComponent hérite indirectement de Component qui est un élément de AWT. 2014-2015 10 Construction d'interface utilisateur La manipulation des composants d'une interface utilisateur est facile avec Swing. Il y’a des éléments préfabriqués (bouton, zone de texte, etc.), facile à assembler et à disposer dans des conteneurs afin de construire des placements complexes. Ces composants simples sont des briques utilisé dans la création de nouveaux types de gadgets d'interface complètement portables et réutilisables. 2014-2015 11 Les composants Un composant est l'objet fondamental d'une interface utilisateur sous Java. Les fenêtres, les boutons, les cases à cocher, les barres de défilement, les listes, les menus, les champs de saisie, etc, sont tous des composants. Pour être utilisé, un composant doit généralement être placé dans un conteneur. Les objets conteneurs regroupent des composants, les disposent pour les afficher dans un gestionnaire de placement et les associent à un périphérique d'affichage particulier. 12 Composant 1 Composant 2 Conteneur De AWT à Swing 2014-2015 13 Remarque: •JComponent héritant de Container, possède à la fois les capacités d'un composant et d'un conteneur. • La classe mère de Component est Object. Suite 2014-2015 14 Tous les composants Swing, sauf pour les conteneurs fenêtre, dérivent de la classe abstraite javax.swing.JComponent. Par exemple, la classe JButton est une classe fille de la classe AbstractButton, elle-même classe fille de la classe JComponent. Suite 2014-2015 Il y’a des classes similaires dans les deux hiérarchies, par exemple, Button et JButton. Mais Swing est beaucoup plus qu'un simple remplacement de AWT - il contient des composants sophistiqués, comme List et JList ainsi qu'une véritable implémentation du paradigme MVC (Modèle- Vue-Contrôleur). C’est un modèle destiné à répondre aux besoins des applications interactives en séparant les problématiques liées aux différents composants au sein de leur architecture respective [6]. Section 2: Les conteneurs 2014-2015 16 Les conteneurs Un conteneur est un composant qui contient et gère d'autres composants. Des objets JComponent peuvent être des conteneurs, car JComponent descend de Container. 2014-2015 17 Suite Les 3 types de conteneurs les plus utilisés sont : JFrame: c’est une fenêtre de niveau supérieur de votre écran. Elle hérite de Window, assez semblable mais sans bordure. JPanel: c’est un conteneur générique, il sert à regrouper des composants à l'intérieur de JFrame et d'autres JPanel. et JApplet: c’est une sorte de conteneur de classe servant de base aux processus exécutés dans un navigateur Web. Comme tout JComponent, un JApplet peut contenir d'autres composants d'interface utilisateur. 2014-2015 18 Remarques On peut utiliser la classe JComponent directement, comme un JPanel, pour maintenir des composants dans un autre conteneur. A l'exception de JFrame et de JWindow, tous les composants et conteneurs Swing sont légers (écrits en Java). On ne doit pas ajouter directement des composants à des composants spécialisés comme les boutons ou les listes. 2014-2015 19 Fenêtres et cadres Les fenêtres (JWindow) et les cadres (JFrame) sont les conteneurs de plus haut niveau des composants Java. JWindow n'est rien d'autre qu'un plein écran graphique d'affichage dans le système de fenêtrage. Elles conviennent surtout pour faire surgir des écrans et des fenêtres popup. De son côté, JFrame est une classe fille de JWindow, équipée d'une bordure et pouvant contenir une barre de menu. Il est également possible de déplacer un cadre sur l'écran et de le redimensionner, à l'aide des contrôles habituels de l'environnement de fenêtrage. 2014-2015 20 Exemple import javax.swing.*; public class Exemple { public static void main(String[] args) { JFrame cadre = new JFrame("Ma première fenêtre Java");/* Le constructeur de JFrame demande le titre de la fenêtre */ cadre.setSize(400, 100); // La taille de JFrame sur le bureau cadre.setLocation(150,100); // position de JFrame sur le bureau JWindow fenêtre = new JWindow();// JWindow n’a pas de titre fenêtre.setSize(400, 100); // La taille de JWindow sur le bureau fenêtre.setLocation(500, 100); // La position de JWindow cadre.setVisible(true); // Affichage des conteneurs sur l'écran fenêtre.setVisible(true); } } 2014-2015 21 Résultat Le cadre créé: La fenêtre créée: 2014-2015 22 Remarques Le constructeur de JFrame peut prendre un argument String indiquant le titre affiché dans la barre de titre. Il est également possible de créer un JFrame sans titre, puis d'appeler ensuite la méthode setTitle() pour en fournir un ultérieurement. JWindow ne possède pas de barre de titre, donc le constructeur de JWindow n’a pas d'arguments. setVisible(true) affiche les conteneurs sur l'écran. JFrame se cache lorsqu’on clique dessus, en appelant la méthode setVisible(false). 2014-2015 23 Il est toutefois impossible de fermer un JWindow dans l'application. Pour mettre fin à l'exécution de l'application Fenêtres, il faut saisir Crtl-C ou la touche destinée à tuer un processus sur votre machine. Du coup, JWindow sera plutôt utilisé par un autre JFrame et sera très rarement la fenêtre principale d'une application. Les cadres (JFrame) sont des exemples de conteneurs. Ils peuvent contenir d'autres composants d'interface tels que les boutons et des champs de texte. De toute façon, tous les autres composants et conteneurs doivent, à un certain niveau, se trouver dans un JWindow ou un JFrame. 2014-2015 24 Traitement des cadres: JFrame 2014-2015 25 Création d'un cadre visible avec une fermeture direct de l'application 2014-2015 26 Code 2014-2015 27 import javax.swing.JFrame; public class Exemple extends JFrame{ public Exemple(String titre) { super(titre); /* appel au constructeur de la classe JFrame, il accepte un paramètre de type String pour le titre de la fenêtre. */ setSize(300, 200); setLocation(100, 100); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Exemple("Première fenêtre"); } } Autre écriture import javax.swing.JFrame; public class Exemple extends JFrame{ public Exemple(String titre) { super(titre); setSize(300, 200); setLocation(100, 100); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Exemple("Première fenêtre"); } } 28 import javax.swing.JFrame; public class Exemple extends JFrame { public Exemple(){ setTitle("Première fenêtre"); /* positionne et donne les dimensions en une seule fois. */ setBounds(100, 100, 300, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Exemple(); } } Ou Quelques méthodes utiles setTitle(): permet d’attribuer un titre à la fenêtre. setSize(): Par défaut, un cadre a la taille 0x0 pixels. La méthode précise la taille requise. setLocation(): cette méthode de la classe Component peut uploads/Ingenierie_Lourd/ chap-7-la-programmation-graphique-et-evenementielle 1 .pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager