Interface graphique avec Java S. RITAL



Documents pareils
Interfaces graphiques avec l API Swing

Java 7 Les fondamentaux du langage Java

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

Développement Logiciel

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Construire des plug-ins pour SAS Management Console SAS 9.1

Cours 2 : programmation des interfaces graphiques

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

Programmation Orientée Objet

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

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

Assistance à distance sous Windows

Le meilleur de l'open source dans votre cyber cafe

Desktop Intégration. Rémi Forax

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

INITIATION AU LANGAGE JAVA

Introduction à Eclipse

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

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

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

Java pour le Web. Cours Java - F. Michel

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Google Drive, le cloud de Google

Créer et partager des fichiers

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

Introduction : les processus. Introduction : les threads. Plan

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Projet Active Object

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

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

Utilisation de GalaxShare

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Microsoft Application Center Test

Prise en main du logiciel. Smart BOARD Notebook 10

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Tutorial et Guide TeamViewer

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

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

Introduction au langage Java

SafeGuard Enterprise Aide administrateur. Version du produit : 5.60

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

Projet de Veille Technologique

OpenOffice.org IMPRESS. Notes de cours Novembre 2005 Version 1.0

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Initiation à JAVA et à la programmation objet.

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

Gestion d Active Directory à distance : MMC & Délégation

Tutorial pour une application simple

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

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

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

TP 4 & 5 : Administration Windows 2003 Server

Internet Explorer. Microsoft. Sommaire :

Quick Start Installation de MDweb version 2.3

Projet de technologie de l information RAPPORT

Auto-évaluation Programmation en Java

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Logiciel de gestion de caisse et d ardoises

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

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Publication Assistée par Ordinateur

Virtualisation de Windows dans Ubuntu Linux

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Création d'une interface graphique

Remote Method Invocation (RMI)

Guide d administration de Java Desktop System Configuration Manager Release 1.1

Eclipse atelier Java

Threads. Threads. USTL routier 1

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

TP1 : Initiation à Java et Eclipse

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

TD/TP 1 Introduction au SDK d Android

PORTAIL INTERNET DE LA GESTION PUBLIQUE Guide d'utilisation du Portail Internet de la Gestion Publique

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

Organiser le menu "Démarrer"

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Rendre un plan de cours interactif avec Médiator

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

TBI-DIRECT. Bridgit. Pour le partage de votre bureau. Écrit par : TBI Direct.

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Un ordonnanceur stupide

Interaction et Vis ualis ation en Géosicence

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

EPIJEUX-WIN POUR MATERNELLE ET ELEMENTAIRE AUTEUR : JEAN-FRANÇOIS LUCAS. Documentation. «Labypro»

Guide de l'agent de notification

2011 Hakim Benameurlaine 1

Présentation des PowerToy pour Windows XP

Université de Bangui. Modélisons en UML

Areca Backup Première Sauvegarde - Configurez votre premier groupe et votre première cible.

Guide pas à pas pour l'utilisation de la Console de gestion des stratégies de groupe

Dessiner dans Galaad FRANÇOIS PALLUT

Les PowerToys pour Windows XP

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

Installation de Windows 2012 Serveur

Transcription:

Interface graphique avec Java S. RITAL

Plan Ma première fenêtre Animation Les boutons Multi-threading Menu, Barre d'outils, Le Pattern MVC Les interfaces Observer / Observable Calculatrice

Les boîtes à outils graphiques Java propose deux boîtes à outils graphiques : AWT (Abstract Window Toolkit) depuis la version 1.0 Dépend d'os Lourde SWING depuis la version 1.2 Ne dépend pas d'os Légére

Swing Container Object JComponent Component Swing est une extension des AWT nombreux nouveaux composants nombreuses facilités séparation entre modèle (données) aspect visuel (UI) contrôle Les composants sont légers, sauf JApplet, JWindow, JFrame, JDialog Container AbstractButton JComponent JToggleButton Panel JCheckBox Applet JRadioButton JButton JApplet JMenuButton Window JWindow JMenu Frame JRadioButtonMenuItem JCheckButtonMenuItem JFrame Dialog JColorChooser JComboBox JDialog JInternalFrame JLabel JList JMenuBar JOptionPane JPanel JPopupMenu JProgressBar...

Ma première fenêtre JFrame JPanel Graphics & Graphics 2D

Ma première fenêtre

Ma première fenêtre

Ma première fenêtre

JFrame JFrame Une JFrame contient une fille unique, de la classe JRootPane JRootPane Cette fille contient deux filles, glasspane (JPanel) et glasspane layeredpane layeredpane (JLayeredPane) La layeredpane a deux filles, contentpane menubar contentpane (JPanel) et menubar (null JMenuBar) class Tout extends JFrame { On travaille dans contentpane. Tout() { JPanel panel; JApplet, JWindow et JDialog sont getcontentpane().add(panel); semblables.... }... }

Objet JFrame JFrame RootPane conteneur principal qui contient les autres composants ; le LayeredPane (en violet), qui forme juste un panneau composé du conteneur global et de la barre de menu (MenuBar ); La menubar (orange) le content pane (en rose) : c'est dans celui-ci que nous placerons nos composants ; le GlassPane (en transparence), couche utilisée pour intercepter les actions de l'utilisateur avant qu'elles ne parviennent aux composants. Il existe d'autres types de fenêtre : la JWindow, une JFrame sans bordure et non draggable (déplaçable), et la JDialog, une fenêtre non redimensionnable.

Look and fel Trois look and feel existent, de noms "com.sun.java.swing.plaf.windows.windowslookandfeel" "com.sun.java.swing.plaf.motif.motiflookandfeel" "javax.swing.plaf.metal.metallookandfeel On essaye de l utiliser par UIManager.setLookAndFeel(lf); et de l appliquer à la racine de l arbre par SwingUtilities.updateComponentTreeUI( SwingUtilities.getRoot(this));

Objet JPanel Voici le marche à suivre : Importer la classe javax.swing.jpanel dans notre classe héritée de JFrame. Instancier un JPanel puis lui spécifier une couleur de fond pour mieux le distinguer. Avertir notre JFrame que ce sera notre JPanel qui constituera son content pane.

Graphics & Graphics2D La classe Graphics2D est une classe dérivée de Graphics

Objet Graphics

Objet Graphics

Résumé. Pour créer des fenêtres, Java fournit les composants swing (dans javax.swing) et awt (dans java.awt). Une JFrame est constituée de plusieurs composants. Par défaut, une fenêtre a une taille minimale et n'est pas visible. Un composant doit être bien paramétré pour qu'il fonctionne à votre convenance. L'objet JPanel se trouve dans le package javax.swing. Un JPanel peut contenir des composants ou d'autres conteneurs. Lorsque vous ajoutez un JPanel principal à votre fenêtre, n'oubliez pas d'indiquer à votre fenêtre qu'il constituera son content pane. Pour redéfinir la façon dont l'objet est dessiné sur votre fenêtre, vous devez utiliser la méthode paintcomponent() en créant une classe héritée. Cette méthode prend en paramètre un objet Graphics. Cet objet doit vous être fourni par le système. C'est lui que vous allez utiliser pour dessiner dans votre conteneur. Pour des dessins plus évolués, vous devez utiliser l'objet Graphics2D qui s'obtient en effectuant un cast sur l'objet Graphics

Animation Travaux pratiques

TP.

Les Boutons Objet JButton Positionner Interagir Classes interne et anonymouse Travaux pratiques : Calculatrice Importer vos applications en JAR

Objet JButton

Objet JButton

Positionner BorderLayout

Positionner GridLayout

Positionner BoxLayout

Interagir MouseListener

Interagir ActionListener

Interagir

Classes internes

Classes anonymes

TP. Notre propre calculatrice!

Importer votre application en.jar

Multi-Threading Pourquoi?

Multi - threading En cas de problème, la fenêtre...

Multi - threading Thread principal Deuxième Thread

Multi-Threading par héritage Java utilise un ordonnanceur

Multi Threading par héritage Un thread peut présenter plusieurs états : NEW : lors de sa création RNNABLE : lorsqu'on invoque la méthode start(), le thread est prêt à travailler. TERMINATED : lorsque le thread a effectué toutes ses tâches ; on dit aussi qu'il est «mort». Vous ne pouvez alors plus le relancer par la méthode start(). TIMED_WAITING : lorsque le thread est en pause (quand vous utilisez la méthode sleep(), par exemple). WAITING : lorsque le thread est en attente indéfinie. BLOCKED : lorsque l'ordonnanceur place un thread en sommeil pour en utiliser un autre, il lui impose cet état.

Multi-threading par héritage

Mutli-threading par héritage

Multi-threading par Runnable

Multi-threading par Runnable

Multi-threading par Runnable

Autres objets Swing

Résumé Un nouveau thread permet de créer une nouvelle pile d'exécution. La classe Thread et l'interface Runnable se trouvent dans le package java.lang, aucun import spécifique n'est donc nécessaire pour leur utilisation. Un thread se lance lorsqu'on invoque la méthode start(). Cette dernière invoque automatiquement la méthode run(). Les opérations que vous souhaitez effectuer dans une autre pile d'exécution sont à placer dans la méthode run(), qu'il s'agisse d'une classe héritant de Thread ou d'une implémentation de Runnable. Pour protéger l'intégrité des données accessibles à plusieurs threads, utilisez le mot clé synchronized dans la déclaration de vos méthodes. Un thread est déclaré mort lorsqu'il a dépilé la méthode run() de sa pile d'exécution. Les threads peuvent présenter plusieurs états : NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING et TERMINATED.

Pattern MVC MVC va vous apprendre à découper vos codes en trois parties : modèle, vue et contrôleur.

Vue Ce que l'on nomme «la vue» est en fait une IHM. Elle représente ce que l'utilisateur a sous les yeux. La vue peut donc être : une application graphique Swing, AWT, SWT pour Java (Form pour C# ) ; une page web ; un terminal Linux ou une console Windows ; etc.

Vue

Modèle Le modèle peut être divers et varié. C'est là que se trouvent les données. Il s'agit en général d'un ou plusieurs objets Java. Ces objets s'apparentent généralement à ce qu'on appelle souvent «la couche métier» de l'application et effectuent des traitements absolument transparents pour l'utilisateur. Par exemple, on peut citer des objets dont le rôle est de gérer une ou plusieurs tables d'une base de données. En trois mots, il s'agit du cœur du programme!

Contrôleur Cet objet - car il s'agit aussi d'un objet permet de faire le lien entre la vue et le modèle lorsqu'une action utilisateur est intervenue sur la vue. C'est cet objet qui aura pour rôle de contrôler les données.

Scénario Dans une application structurée en MVC, voici ce qu'il peut se passer : l'utilisateur effectue une action sur votre vue ; l'action est captée par le contrôleur, qui va vérifier la cohérence des données et éventuellement les transformer afin que le modèle les comprenne. Le contrôleur peut aussi demander à la vue de changer ; le modèle reçoit les données et change d'état (une variable qui change, par exemple) ; le modèle notifie la vue (ou les vues) qu'il faut se mettre à jour ; l'affichage dans la vue (ou les vues) est modifié en conséquence en allant chercher l'état du modèle.

MVC 1 & MVC 2 MVC 1, Chaque modèle possède son propre contrôleur. MVC 2, Présence d'un super contrôleur.

Des objets qui parlent et qui écoutent : le pattern observer Il fait communiquer des objets entre eux ; c'est un bon moyen d'éviter le couplage d'objets.

Le pattern Observer La vue implémente l'interface Observer Le modèle implémente l'interface Observable

Calculatrice. JFrame Observable implémente héritage AbstractModel Observer implémente use héritage Fenêtre use AbstractContrôleur Calculette héritage JPanel JButton CalculetteContrôleur

Découpage en packages JFrame Observable implémente héritage AbstractModel Observer implémente use héritage Fenêtre use AbstractContrôleur Calculette héritage JPanel JButton CalculetteContrôleur

Résultats

Découpage en packages