Compléments de programmation Objet AWT. Abstract Window Toolkit. Info 423. Références. Introduction. Modèle / Vue / Contrôleur (MVC) Introduction



Documents pareils
Interfaces graphiques avec l API Swing

Introduction à Eclipse

Auto-évaluation Programmation en Java

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

Bases Java - Eclipse / Netbeans

Programmation Orientée Objet

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

Java 7 Les fondamentaux du langage Java

Développement Logiciel

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

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

Construire des plug-ins pour SAS Management Console SAS 9.1

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

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Programmer en JAVA. par Tama

Introduction au langage Java

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

Mettre en place un formulaire dans le site avec le module webform

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

Cours 1: Java et les objets

Manuel d installation de Business Objects Web Intelligence Rich Client.

TP1 : Initiation à Java et Eclipse

INITIATION AU LANGAGE JAVA

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

TP SIN Programmation sur androïde Support : eclipse

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

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

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Programmation avec des objets : Cours 7. Menu du jour

Corrigé des exercices sur les références

TD/TP PAC - Programmation n 3

Cours 2 : programmation des interfaces graphiques

Java Licence professionnelle CISII,

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

Tutorial pour une application simple

Programmation par les Objets en Java

Le meilleur de l'open source dans votre cyber cafe

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Manuel du composant CKForms Version 1.3.2

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

Initiation à JAVA et à la programmation objet.

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

Gestionnaire d emploi du temps

NAS 206 Utiliser le NAS avec Windows Active Directory

Eclipse atelier Java

Formation. Module WEB 4.1. Support de cours

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Package Java.util Classe générique

Corrigés des premiers exercices sur les classes

BIRT (Business Intelligence and Reporting Tools)

GESTION DES MENUS. Un menu est un ensemble de liens permettant la navigation dans le site.

Tutoriel. Votre site web en 30 minutes

Tutorial Terminal Server sous

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

26 Centre de Sécurité et de

Utilisation de la clé USB et autres supports de stockages amovibles

Chapitre 10. Les interfaces Comparable et Comparator 1

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

L accès à distance du serveur

NOTICE D UTILISATION

Une introduction à Java

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Projet de développement

Applications distribuées: le retour du client "riche"

OneDrive, le cloud de Microsoft

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

Silhouette Studio Leçon N 2

Stopack : logiciel pour l entrepôt

Manuel d utilisation du site web de l ONRN

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Programmation Java TM pour les enfants, les parents et les grands-parents

Solutions du chapitre 4

Introduction à Expression Web 2

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Utiliser le service de messagerie électronique de Google : gmail (1)

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

ScTools Outil de personnalisation de carte

Optimiser pour les appareils mobiles

Peut être utilisée à l intérieur du site où se trouve la liste de référence.

Réglages du portail de P&WC

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Traitement par lot conversion de plusieurs images en JPEG

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

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

Access 2007 FF Access FR FR Base

- Université Paris V - UFR de Psychologie ASDP4 Info Introduction à Windows

PROCÉDURE D AIDE AU PARAMÉTRAGE

TD/TP 1 Introduction au SDK d Android

Projet de programmation (IK3) : TP n 1 Correction

Alfstore workflow framework Spécification technique

Création d une connexion VPN dans Windows XP pour accéder au réseau local de l UQO. Document préparé par le Service des technologies de l information

Volet de visualisation

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

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

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

Desktop Intégration. Rémi Forax

Transcription:

Info 423 Compléments de programmation Objet Contenu : Interfaces graphiques, le package AWT Multitâches, les "Threads" Fichiers Volume horaire : 9 / 9 / 12 Références Différents tutoriels Java en ligne : Support de cours Java de Philippe Durif Développons en Java, Jean Michel Doudoux Programmation Orientée Objets, Henri Garreta Penser en Java de Bruce Eckel The Java Tutorial de Sun Outils et Docummentation : http://www.oracle.com/technetwork/java/ http://www.eclipse.org/ 1 2 AWT Abstract Window Toolkit Modèle / Vue / Contrôleur (MVC) Une façon d'organiser un programme. On distingue trois entités distinctes qui sont : le modèle, la vue et le contrôleur Modèle : données manipulées par l'application Package pour la création de fenêtres d'interaction Vue affichage ou interface utilisateur 3 4 Contrôleur écouteurs, analyse de requêtes, gestion d'événements Interactions entre Le Modèle / / Le Contrôleur Package des composants graphiques : AWT : Interfaces Graphiques de base (écrites en code natif) java.awt java.awt.event Composants SWING (écrites en java au dessus de l'awt) javax.swing Swing est plus puissant que AWT, mais pour plus de clarté pédagogique on se limitera à AWT. Face aux problèmes de performance de Swing, IBM a développé sa propre bibliothèque SWT, utilisée notamment dans Eclipse. 5 6

AWT : Abstract Window Toolkit La composition d'une fenêtre AWT est hiérarchique. Elle est construite à partir des composants graphiques. A la base : les COMPOSANTS ("Component") La création de l'interface graphique d'une application autonome (main) passe par une instance de la classe Frame Cette fenêtre est le "container" des différents composants (boutons, zones de saisie, etc ) Deux types de composants : 1. Les containers qui contiennent d'autres composants (Frame, Panel,...) 7 2. Les composants atomiques qui se trouvent en feuille de la hiérarchie de composition. Il peuvent être prédéfinis (, TextField,...) ou crées. 8 Remarque : Tous les composants sont visibles par défaut, sauf les fenêtres (Frame). On doit les rendre visibles avec la méthode setvisible(true). La hiérarchie d'héritage Checkbox List différent de "hiérarchie de la composition" Exemple 1 (1/3) Choice Component (abstraite) // saisie de texte TextComponent Label Canvas // texte TextArea TextField // panneaux Panel // plusieurs lignes // une seule ligne Applet Frame Container (abstraite) Window Dialog 9 Frame 10 11 Exemple 1 (2/3) package premierexemple; public class Fenetre extends Frame { final static int HAUTEUR = 300; final static int LARGEUR = 250; public Fenetre( ) { settitle("premier exemple"); // met un titre setsize(largeur, HAUTEUR); // dim fenêtre setbackground(color.red); // couleur du fond // construit un bouton bouton = new ("Premier Composant"); // ajoute ce bouton en haut de la fenêtre add(bouton, "North"); setvisible(true); 12 package premierexemple; Exemple 1 (3/3) public class LancerFenetre { new Fenetre();

Le modèle Exemple 2 (1/5) Exemple 2 (2/5) public class Compteur { private int v; public Compteur(){ v = 0; public int valeur() { return v ; public boolean estpair() { return v % 2 == 0 ; public void raz() { v = 0 ; public void incr() { v = v + 1 ; public String tostring(){ return Integer.toString(v); Frame Label Hiérarchie de la composition: Frame (BorderLayout) EAST CENTER WEST Label 13 14 Exemple 2 (3/5) Exemple 2 (4/5) 15 public class FenetreCompteur extends Frame { private Compteur c ; // le modele final static int HAUTEUR = 50; final static int LARGEUR = 200; public FenetreCompteur (Compteur c) { this.c = c ; settitle("deuxième exemple"); setsize(largeur, HAUTEUR); // gestionnaire affichage this.setlayout(new BorderLayout()) ; 16 Label texte = new Label (c.tostring()) ; b1 = new ("Incr"); b2 = new ("Raz"); this.add (b1, BorderLayout.WEST) ; this.add (texte, BorderLayout.CENTER) ; this.add (b2, BorderLayout.EAST) ; b1.addactionlistener (new IncrListener(c,texte)) ; b2.addactionlistener (new RazListener(c,texte)) ; setvisible(true); Exemple 2 (5/5) public class LancerFenetre { Compteur c = new Compteur(); new FenetreCompteur(c); Chaque Container possède un gestionnaire de mise en page : un LayoutManager. Un LayoutManager se charge de : placer des composants, lors des appels à la méthode add ; donner une taille et une forme à chaque composant, en fonction de sa "taille préférée", de son contenu et de sa position ; replacer les composants en cas de redimensionnement. 17 18

Cinq classes (Layouts) prédéfinies qui implémentent l'interface LayoutManager BorderLayout : Par défaut pour les sous-classes de Frame (cf. exemple), Window et Dialog Elles représentent des dispositions différentes BorderLayout FlowLayout GridLayout CardLayout GridBagLayout Les plus utilisées West North Center South East Au plus cinq composants 19 20 21 Exemple BorderLayout public class PaneauBorder extends Panel { public PaneauBorder ( ) { this.setlayout(new BorderLayout()); this.setbackground(color.pink); Label texte1 = new Label("un",Label.CENTER) ; Label texte2 = new Label("deux",Label.CENTER) ; Label texte3 = new Label("trois",Label.CENTER) ; Label texte4 = new Label("quatre",Label.CENTER) ; Label texte5 = new Label("cinq",Label.CENTER) ; this.add (texte1, BorderLayout.NORTH) ; this.add (texte2, BorderLayout.WEST) ; this.add (texte3, BorderLayout.CENTER) ; this.add (texte4, BorderLayout.EAST) ; this.add (texte5, BorderLayout.SOUTH) ; 22 FlowLayout : les composants sont mis les uns après les autres, dans l'ordre de leur ajout (par défaut pour la classe Panel (et donc pour Applet)) one four two five three La dimension est renvoyée par la méthode getpreferredsize() de chaque composant 23 Exemple FlowLayout public class PaneauFlow extends Panel{ public PaneauFlow(){ this.setlayout(new FlowLayout()) ; // gestionnaire this.setbackground(color.yellow); Label a1 = new Label("un") ; TextField a2 = new TextField("deux",10) ; TextArea a3 = new TextArea("trois",3,10) ; a4 = new ("quatre") ; Checkbox a5 = new Checkbox("cinq") ; this.add (a1) ; this.add (a2) ; this.add (a3) ; this.add (a4) ; this.add (a5) ; 24 GridLayout : pour construire une grille régulière (constructeur à 2 paramètres : nb de lignes, nb de colonnes) un quatre deux cinq trois six Les dimensions sont les mêmes pours tous les composants.

25 Exemple GridLayout public class FenetrePrincipal extends Frame { final static int HAUTEUR = 150; final static int LARGEUR = 350; public FenetrePrincipal(){ // 1 ligne, 2 colonnes this.setlayout(new GridLayout(1,2)); this.add(new PaneauBorder()); this.add(new PaneauFlow()); 26 CardLayout : ajout à un container une liste de sous-containers ou de composants affichés un par un, à la manière des boites de dialogue à onglets GridBagLayout : le plus complet et le plus complexe... Autre exemple de disposition tfpanel Exemple 3 (1/6) Exemple 3 (2/6) Hiérarchie de la composition: FenetreAvecPaneaux (GridLayout) tfpanel chpanel rbpanel tbpanel chpanel rbpanel tfpanel (FlowLayout) chpanel(flowlayout) rbpanel (FlowLayout) tbpanel (FlowLayout) tbpanel Label TextField Label Choice Checkbox Checkbox 27 28 Exemple 3 (3/6) Exemple 3 (4/6) 29 public class FenetreAvecPaneaux extends Frame { final static int HAUTEUR = 300; final static int LARGEUR = 200; public FenetreAvecPaneaux(){ //Text Field Panel Panel tfpanel = new Panel(new Label label = new Label("TextField"); tfpanel.add(label); TextField textfield =new TextField(15); tfpanel.add(textfield); 30 // Choice Panel Panel chpanel = new Panel(new Label label2 = new Label("Choice"); chpanel.add(label2); Choice choix = new Choice(); choix.additem("solaris"); choix.additem("linux"); chpanel.add(choix); // Radio Panel Panel rbpanel = new Panel(new Checkbox rbsolaris = new Checkbox("Solaris"); rbpanel.add(rbsolaris); Checkbox rblinux = new Checkbox("Linux"); rbpanel.add(rblinux);

Exemple 3 (5/6) Exemple 3 (6/6) // Panel Panel btpanel = new Panel(new ok = new ("Ok"); btpanel.add(ok); cancel = new ("Cancel"); btpanel.add(cancel); new FenetreAvecPaneaux(); // fin FenetreAvecPaneaux 31 this.setbackground(color.gray); this.setlayout(new GridLayout(4,1)); this.add(tfpanel); this.add(chpanel); this.add(rbpanel); this.add(btpanel); 32 Exo pour les étudiants : texte a button b texte c 33 Le dimensionnement des composants est automatique grâce au LayoutManager. Pour donner à un composant une taille donnée, on peut redéfinir la méthode getpreferedsize de la classe Component. public class MonBouton extends { public MonBoutton(String nom) { super(nom); public Dimension getpreferredsize() { return new Dimension(100, 200); 34 Le méthode getpreferedsize() indique la taille souhaitée mais pas celle imposée. En fonction du LayoutManager, le composant pourra ou non imposer sa taille. public class TestDimension extends Frame { final static int HAUTEUR = 400; final static int LARGEUR = 400; public TestDimension (){ this.setlayout(new FlowLayout()); MonBoutton b = new MonBoutton("cliquez ici"); this.add(b); 35 Pas de Layout. On peut ne pas utiliser des Layout et placer les composants à la main en indiquant leurs coordonnées et leurs dimensions. Dans ce cas il faut appeler setlayout(null). Trois méthodes de Component permettent de positionner des composants : * setbounds(int x, int y, int largeur, int hauteur) * setlocation(int x, int y) * setsize(int largeur, int hauteur) 36 Exemple : public class FenetreSansLayout extends Frame { final static int HAUTEUR = 400; final static int LARGEUR = 400; public FenetreSansLayout(){ this.setlayout(null); // Sans Layout Label t=new Label("Hello tous!"); this.add(t); t.setbounds(50,50,150,70); // position et taille t.setbackground(color.yellow); new FenetreSansLayout();

Les menus Classes : Menu, MenuBar et MenuItem MenuBar Les menus Hiérarchie d'héritage de MenuComponent MenuBar Menu MenuItem MenuComponent (abstraite) Menu MenuItem CheckboxMenu 37 38 Les menus Classes d'affichage de menus: MenuBar. Seul Frame peut avoir une barre de menu. On attache une barre de menu avec la méthode setmenubar(menubar) Menu. Créé avec un titre. Par la suite on lui ajoute des items avec la méthode add. MenuItem qui peuvent être : - des chaînes de caractères, ou - des menus Menu (sous-classe de MenuItem). Code de l'exemple : Exemple 4 (1/2) public class FenetreAvecMenus extends Frame { final static int HAUTEUR = 200; final static int LARGEUR = 200; public FenetreAvecMenus(){ this.settitle("mes information"); Menu formation = new Menu("Formation"); Menu loisirs = new Menu("Loisirs"); Menu musique = new Menu("Musique"); 39 40 formation.add(new MenuItem("Pascal")); formation.add(new MenuItem("Java")); Exemple 4 (2/2) Code de l'exemple : loisirs.add(new MenuItem("Sport")); loisirs.add(new MenuItem("Cinéma")); loisirs.add(musique); musique.add(new MenuItem("Classique")); musique.add(new MenuItem("Jazz")); musique.add(new MenuItem("Pop")); 41 MenuBar mb = new MenuBar(); mb.add(formation); mb.add(loisirs); this.setmenubar(mb);