240 likes | 358 Views
Jean-Rémi LECQ Version 0.1. Développement d’interfaces graphiques en Java à l’aide de SWING. Sommaire. Introduction Rappel sur les JFC AWT Swing Première Application (TD1) Fenêtres, panneaux Fenêtres : JFrame, JDialog, JWindow Panneaux : JRootPane, J Panel, JMenuBar PremierJMenu (TD2)
E N D
Jean-Rémi LECQVersion 0.1 Développement d’interfaces graphiques en Java à l’aide de SWING
Sommaire • Introduction • Rappel sur les JFC • AWT • Swing • Première Application (TD1) • Fenêtres, panneaux • Fenêtres : JFrame, JDialog, JWindow • Panneaux : JRootPane, J Panel, JMenuBar • PremierJMenu (TD2) • Les évènements • PremierJMenu (TD2 – suite) + SecondJMenu +FocusEvent
Rappel sur les JFC JFC = Java Foundation Classes. Ensemble de librairies Java permettant la constructions d’applications graphiques (GUI et graphiques) sous n’importe quel OS. Les 5 parties majeures des JFC :AWT – SWING – Accessibility - Java2D - Internationalization
1- Contexte D’abord… AWT : Abstract Windowing Toolkit.Première librairie fournie par SUN pour le développement d’interfaces graphiques.Eléments graphiques auront l’apparence que l’OS leur donne (utilisation ressources systèmes via abstractions) !
1- Contexte Ensuite … SWING : utilise des éléments d’AWT.SWING peut être considérée comme une évolution d’AWT.Eléments graphiques dessinés par la librairie elle-même ! Composant graphique peut ne pas avoir d’équivalent système.Donc -> Portabilité accrue.SWING ne remplace pas AWT, c’est juste un couche au dessus.
2- TD n°1 Première application SWING Ordre des tâches à effectuer ; • Ecriture du code de la classe, • Compilation (javac.exe) et debugage (?), • Création du Manifest, • Création de l’archive auto exécutable (jar.exe), • Exécution de notre archive auto exécutable (java.exe)
2.1- Ecriture du code de la classe import javax.swing.*; publicclass PremiereApp { privatestatic String texte = "Hello World!"; publicstaticvoid main(String[ ] args) { JFrame maFenetre = new JFrame( "ma première fenêtre SWING"); maFenetre.setSize(250,80); JLabel monLabel = new JLabel(texte, SwingConstants.LEFT); maFenetre.getContentPane().add(monLabel); maFenetre.show(); maFenetre.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); } }
2.2- Compilation (javac.exe) et debugage • Sous Eclipse ou autre Framework -> automatique. • En ligne de commande -> positionnez vous dans le répertoire qui contient votre classe java, puis : "/pathtojavac.exe/javac" MaClass.java
2.3 - Création du Manifest • Manifest -> Qu'est ce que c'est ? C'est un fichier qui spécifie la classe "exécutable".Celle qui contient la méthode ??? public static void main (String[ ] args){ … }
2.3 - Création du Manifest Créez un fichier Manifest.mf. Contenu : Main-Class: MaClass Attention :- Pas d'espace entre "Main-Class" et ":",- un espace entre ":" et "MaClass",- (au moins) un retour à la ligne à la fin de cette ligne !
2.4 - Création de l’archive auto exécutable (jar.exe) Sous Eclipse ou autre Framework -> automatique. En ligne de commande -> positionnez vous dans le répertoire qui contient votre classe java, puis : "/pathtojarexe/jar" -cmf Manifest.mf NomduJar.jar MaClass1.class MaClass2.class Pour notre exemple : "/pathtojar.exe/jar" -cmf Manifest.mf PremiereApp.jar PremiereApp.class Sur moka : U:/pathtojar.exe/> "C:\Program Files\java\j2sdk1.4.1_02\bin\jar" -cmf manifest.mf PremiereApp.jar PremiereApp.class
2.5- Exécution de notre archive auto exécutable (java.exe) En mode "fenêtre" : double clic sur l'archive auto exécutable "MonArchive.jar". En mode console : "/pathtojava.exe/java" -jar MonArchive.jar
2.6- Listing du contenu d'un jar • En mode console : jar –tvf MonArchive.jar
3 – Fenêtres, panneaux et bordures 3.1- FENETRES En SWING : • JFrame, • JDialog (fenêtres secondaires modales), • JWindow (Splash screen).
3.1.1- JFrame - Architecture JFrame JRootPane glassPane layeredPane ( JLayeredPane) (1 Jpannel par défaut) contentPane menuBar (1 JPannel par défaut) (Null JmenuBar par défaut)
menuBar glassPane layeredPane contentPane 3.1.1- JFrame - Architecture
3.2 – Les panneaux Conteneurs • JRootPane. • glassPane (attrape événements). • layeredPane (conteneur de fenêtres filles), • contentPane (JPane par défaut). • menuBar (null par défaut). • JPanel : conteneur de composant(s), leur organisation dépend d'un "layour manager". • JMenuBar : "null", sinon unique par JFrame.
Créer la fenêtre suivante (l'affichage seulement, les évènements seront ajoutés après). 3- TD n°2 Premier JMenu
3.2.4- La gestion des évènements • Evènement : action de l'utilisateur (en règle générale), clic sur un bouton; sélection, simple déplacement souris. • Exemples de classes d’évènements : FocusEvent : Passage du focus à un composant MouseEvent : Clic sur un JPanel ActionEvent : Clic sur un JButton DocumentEvent : Ajout d’une lettre à un JTextField • Objet évènement contient des informations sur son contexte d'apparition(coordonnée, source, valeur d'une touche).
3.2.4- La gestion des évènements • Classe java.util.EventObject :Superclasse de tous les évènements. • Exemple de classe d'évènements : ActionEvent -> clic sur un composant, ComponentEvent -> modification d'un composant ContainerEvent -> composant ajouté à un conteneur FocusEvent KeyEvent MouseEvent
Abonnement addActionListener, addKeyListener, addFocusListener Listener Bouton Notification 3.2.4- La gestion des évènements • Listener : objet java à l'écoute d'un évènement sur un composant déterminé.-info sur lui-même,-sur l'objet à son origine (source).
3.2.4- La gestion des évènements • Listener = classe qui implémente une des interfaces de java.awt.Event (à importer). • Méthodes à redéfinir (cf. cours) • Exemple : public class PremierMenu extends JFrame implements ActionListener { public void actionPerformed(ActionEvent e) { … } }
TD n°2 Premier JMenu (suite) • Ajout des évènements TD n°2 Second Menu TD n°3 FocusEvent- Color JFrame.getBackground() - java.awt.Color -> Color.GREEN