Cours de Java Cours III : Les Interfaces Graphiques. Benjamin FAUCHER Cubis-Helios Consulting



Documents pareils
Interfaces graphiques avec l API Swing

Java 7 Les fondamentaux du langage Java

Cours 2 : programmation des interfaces graphiques

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Développement Logiciel

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Programmation Orientée Objet

Construire des plug-ins pour SAS Management Console SAS 9.1

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Auto-évaluation Programmation en Java

Introduction au langage Java

Création d un service web avec NetBeans 5.5 et SJAS 9

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Table des matières Introduction Démarrage Les composants graphiques... 26

TP1 : Initiation à Java et Eclipse

TP2 : Client d une BDD SqlServer

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

La base de données XML exist. A. Belaïd

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java Licence professionnelle CISII,

L'essentiel de Java et de l'objet

Héritage presque multiple en Java (1/2)

Contre exemple de présentation

La gestion des serveurs de mail

Eclipse atelier Java

TP SIN Programmation sur androïde Support : eclipse


INITIATION AU LANGAGE JAVA

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Initiation à JAVA et à la programmation objet.

Corrigé des exercices sur les références

PROCÉDURE D AIDE AU PARAMÉTRAGE

Alfresco Guide Utilisateur

Création d'une interface graphique

Gestion des fichiers sur micro-ordinateur

TP1 : Initiation à Java et Eclipse

Formation. Module WEB 4.1. Support de cours

< Atelier 1 /> Démarrer une application web

Desktop Intégration. Rémi Forax

Comment accéder à d Internet Explorer

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Remote Method Invocation (RMI)

Objets et Programmation. origine des langages orientés-objet

Threads. Threads. USTL routier 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation par composants (1/3) Programmation par composants (2/3)

Terminal Server RemoteAPP pour Windows Server 2008

Solutions du chapitre 4

Présentation des PowerToy pour Windows XP

Cours 1: Java et les objets

L Histoire de Java. «Portable» veut dire qu il peut tourner sur plusieurs systèmes d exploitations différents ; Windows, Linux

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Gestion des documents avec ALFRESCO

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Gestionnaire d emploi du temps

COURS WINDEV NUMERO 3

I Pourquoi une messagerie?

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

Programmation par les Objets en Java

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Présentation du logiciel Cobian Backup

MEDIAplus elearning. version 6.6

Créer et partager des fichiers

LES BIBLIOTHEQUES DE WINDOWS 7

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Au préalable, nous nous plaçons dans l espace au sein duquel nous allons créer notre raccourci vers l ENTG.

Vous pouvez à présent à reconfigurer votre messagerie en cliquant ici.

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Une introduction à Java

Procédure : Sauvegarder un Windows 7 sur un disque réseau

Formation VBA 3 Interagir

Design patterns. Design patterns - définition. Design patterns - avantages

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

sommaire ÉTAPES OBLIGATOIRES Récupérer le connecteur... 3

Édu-groupe - Version 4.3

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Administration du site

Freeway 7. Nouvelles fonctionnalités

Transcription:

Cours de Java Cours III : Les Benjamin FAUCHER Cubis-Helios Consulting

Cours III : Les Interfaces Graphiques I. Introduction II. AWT : Frame et Panel III. AWT : Composants graphiques IV. Evènements V. javax.swing 2

I. Introduction Interfaces graphiques = IHM : Interface Home-Machine = GUI : Graphical User Interface En java, les Interfaces graphiques sont basées sur des objects dont les classes appartiennent aux paquetage java.awt et javax.swing Les composants de ces deux paquetages fonctionnent de la même manière mais ne sont pas compatibles Les interfaces crées avec AWT produit une interface à l aide du gestionnaire de fenêtre de l OS sur lequel la JVM est installée. Les interfaces crées avec SWING ne crée par contre qu une image d interface, sans appeler le gestionnaire de fenêtre (donc plus rapide). Nous allons d abord voir comment marche le interfaces sous AWT, puis nous verrons le fonctionnement (quasi-similaire) de SWING 3

II. AWT : Frame et Panel 1. Introduction Le Sommet de la hiérarchie de classe de AWT se trouve la classe Component, une classe abstraite qui encapsule tous les attributs d un élément visuel. Parmi ces composants, on trouve une sous-classe appelée Container, qui comme son nom l indique sert à contenir d autre objets (graphiques). Lorsque l on crée une IHM avec AWT, il faut d abord chercher à définir quel sera l élément qui contiendra l ensemble des objets graphiques et ceci grâce à un objet de type Container. Parmi ces Container, deux principales classes : Panel et Frame Un Panel sert à contenir des objets graphiques et à les organiser graphiquement Frame, hérite de la classe Window et génère donc une fenêtre avec le gestionnaire de fenêtre de l OS, qui peut contenir d autres objets graphiques 4

II.2 Hiérarchie des classes AWT 5

II.3 La classe Frame 1/2 La classe Frame étend la classe Window qui permet de créer une fenêtre sur le bureau (comme toute application) prenant la forme des fenêtre de l OS sur lequel la JVM est installée, avec une barre de titre, des bordures et des boutons de redimentionnement. Par défaut, toutes ces fonctionnalités (redimentionnement, titre ) ne sont pas définies. Pour afficher une fenêtre vide avec Java, il faut donc créer un objet qui étend la classe Frame ou instancier un objet Frame : Ex : Frame frame = new Frame(); ou new Frame(«titre»); La classe Frame hérite de Container, il faut donc par la suite «remplir» cet objet par d autre élément graphiques (ou Component) 6

II.3 La classe Frame 2/2 La classe Frame définit ou hérite d une certain nombre de méthodes : settitle(string str) : définit le titre de la fenêtre setsize(int long, int haut) : définie la taille de la fenêtre pack() : réduit la taille de la fenêtre à la taille minimum supportée par ses composants graphiques setvisible(boolean b) : déclare la fenêtre visible ou invisible setresizable(boolean b) : déclare la fenêtre resizable ou pas setmenubar(menubar mb) : ajoute une barre de menu à la fenêtre seticonimage(image ico) : change l icône de l application addwindowlistener(windowlistener) : ajout d un écouteur sur la fenêtre ( voir événements ) 7

II.4 La classe Panel La classe Panel sert à définir des cadres à l intérieur d une fenêtre ( = d une Frame ), c est donc un sous-cadre. On peut définir une hiérarchie infinie de sous cadre à l intérieur d une fenêtre, ou à l intérieur d un autre cadre. Elle hérite également de Container, et on peut donc la remplir de Component. Déclaration : Panel paneltest = new Panel(); Elle dispose des méthodes héritées : setsize(int long, int haut) : définie la taille de la fenêtre setvisible(boolean b) : déclare la fenêtre visible ou invisible setlocation(point p) : définit l emplacement (point haut gauche) 8

II.5 Les Container Les container sont des conteneurs d objet graphique Component : Ajout de Component : add(component cp) ou add(component cp, int place) ( dépend du gestionnaire de placements) Retirer un Component : remove(component cp) ou remove(int place) setlayout(layoutmanager lm) : définie le gestionnaire de placement à respecter pour l organisation géographique (graphique) des Component. Pour placer graphiquement les Component qu on ajoute dans un Container, on peut choisir ou définir un gestionnaire de placement. Le java propose un certain nombre de gestionnaires, héritant de la classe LayoutManager. 9

II.6 Les gestionnaires de placement Gestionnaires les plus fréquemment utilisés : FlowLayout() (Par défaut) : ajoute les Component en ligne à la suite et va à la ligne quand il n y a plus de place BorderLayout() : place les des zones géographiques NORTH, SOUTH, WEST, EAST, CENTER : Ex : setlayout(new BorderLayout()); add(new Panel(), BorderLayout.SOUTH); GridLayout(int long,int haut) : tableau qui divise l espace en case de même tailles ( change donc la taille du Component si nécessaire) BoxLayout(Container cible,int axe) : ajoute les Component en ligne suivant l axe définit : BoxLayout.X_AXIS ou BoxLayout.Y_AXIS 10

III. AWT : Composants graphiques Nous allons maintenant voir les composants graphiques de bases (autres que Container) que nous pouvons ajouter dans les Container Nous allons d abord voir les propriétés qu ils ont hérités de Component : paint(graphics g) : qui gère son affichage setbackground(color col), setforeground(color col) : change les couleur d affichage du Component setsize(int long, int haut) : change la taille du Component setvisible(boolean b) : déclare la fenêtre visible ou invisible Diverses fonction pour connaître la position du bouton dans la fenêtre et sa taille ( voir API ) 11

III.1 Les Composants de bases Classe fonction méthodes spécifiques Button Label TextField TextArea bouton clickage zone de texte non modifiable zone de saisie de texte (une ligne), avc des ascensseurs lorsque la zone est trop grande zone de saisie de texte (plusieurs lignes) changement du nom : setlabel(string str) ajouter d'une action lorsqu'on clicke changement du texte affiché : settext(string str) récupération de la chaîne tapée par l'utilisateur : String gettext(); récupération de la chaîne tapée par l'utilisateur : String gettext(); Canvas zone de dessin - ScrollBar Choice, CheckBox, List barre de défilement ( ou jauge ) pour définir une valeur entière listes à choix multiples, à selectionner ou à cocher méthodes pour définir le pas d'incrémentation, ou récupérer la valeur : int getvalue(); méthode de retour des valeurs sélectionnées 12

III.2 Exemple 1/2 import java.awt.*; class TestGUI { Frame fenetre; Button bouton; TextField textfield; Label label = new Label(" Ceci est un Label"); TestGUI(){ fenetre = new Frame("Exemple de IHM : TestGUI"); fenetre.setlayout(new BorderLayout()); Panel panel = new Panel(); bouton = new Button("Clickez"); textfield = new TextField(); Canvas canvas = new Canvas(); canvas.setbackground(color.blue); canvas.setsize(200,100); 13

III.2 Exemple 2/2 panel.setlayout(new GridLayout(2,1)); panel.add(bouton); panel.add(textfield); fenetre.add(panel,borderlayout.north); fenetre.add(label,borderlayout.center); fenetre.add(canvas,borderlayout.south); //fenetre.pack(); fenetre.setsize(200,300); fenetre.setvisible(true); public static void main(string args[]){ TestGUI test = new TestGUI(); 14

IV. Les Evènements Nous savons créer une fenêtre composée d éléments graphiques, néanmoins pour l instant, ces éléments ne sont pas réactif : si on clicke sur un bouton, rien ne se passe. Il faut donc spécifier le comportement des éléments faces aux Evènements, qui sont des cas d utilisations (paquetage java.awt.event). Ex : clicker sur un bouton, ou sur la croix de fermeture de fenêtre... La gestion de ces évènements se fait en 2 étapes, au moyen d écouteurs : 1. On définit l action à faire si l événement se produit en créant une instance implémentant l interface correspondante à l écouteur d évènement, et en redéfinissant la méthode de réponse à l événement. 2. On abonne le composant graphique concerné par l événement à cette instance d écouteur, en mettant un «écouteur» sur cet évènement 15

IV.1 Evènement : Click sur un bouton Dans le cas d un bouton, l événement produit par un click est un ActionEvent, et linterface qui écoute ce type d événement est un ActionListener. Nous allons donc créer une classe qui implément cette interface : Ex : class monecouteur implements ActionListener { Pour implémenter cette interface, il faut redéfinir la méthode actionperformed (ActionEvent e), qui dit ce que doit faire le programme quand l ActionEvent se produit. Ex : class monecouteur implements ActionListener { public void actionperformed(actionevent e) {... Il reste ensuite à abonner notre objet à une instance de notre écouteur, pour cela on utilise la méthode addactionlistener(actionlistener al) de Button. Ex : bouton.addactionlistener(new monecouteur()); 16

IV.2 Evènement : Click sur un bouton : Exemple import java.awt.*; import java.awt.event.*; class CompteClick extends Frame{ private Button bouton; private int cp = 0; CompteClick(){ bouton = new Button("Clickez Moi"); bouton.addactionlistener(new MonEcouteur()); add(bouton); pack(); setvisible(true); // inner class : // classe interne invisible de l'extérieur class MonEcouteur implements ActionListener { public void actionperformed (ActionEvent event){ System.out.println("Click numero : "+cp++); public static void main(string args[]){ CompteClick test = new CompteClick (); 17

IV.3 Evènement : fermeture de la fenêtre Dans le cas de la fermeture de la fenêtre de l application ( = la Frame), l événement produit est un WindowEvent et l interface qui permet d écouter ce type d événement est WindowAdapter. Lorsque l on clique sur la croix de fermeture de la fenêtre, alors l interface WindowListener appelle la méthode windowclosing (WindowEvent e), c est donc le corps de cette méthode qu il faut redéfinir. Dans la pratique, on utilisera plutôt une classe du java implémentant déjà WindowListener, cette classe s appelle WindowAdapter. Il faut ensuite abonner l instance de notre Frame à notre écouteur en utilisant la méthode inclut dans Frame : addwindowlistener (WindowListener win); 18

IV.4 Evènement : fermeture de la fenêtre : Exemple class FermeFenetre { Frame mafenetre = new Frame("Test de Fermeture"); FermeFenetre(){ mafenetre.addwindowlistener(new Fermeture()); mafenetre.setsize(400,300); mafenetre.setvisible(true); class Fermeture extends WindowAdapter { public void windowclosing(windowevent event){ System.out.println(" Au revoir "); System.exit(0); // termine l'application public static void main(string args[]){ FermeFenetre test = new FermeFenetre(); 19

V. javax.swing Le paquetage javax.swing contient des classes équivalentes au Component de AWT. Ces classes sont issues Jcomponent et portent les mêmes noms qu en AWT avec un «J» devant : Ex : JButton, JFrame, JPanel, Ces classes comportent les mêmes méthodes, enrichies d un certains nombre d autres. Il subsiste quelques petites différences entre SWING et AWT : En SWING, on ne peut pas ajouter de Jcomponent directement à une Jframe; on doit passer par la méthode : JPanel getcontentpane(); Ex : majframe.getcontentpane().add(monjcomposant); En SWING, on peut définir plus facilement la fermeture de la fenêtre : majframe.setdefaultcloseoperation(jframe.dispose_on_close); 20