Java Swing.

Slides:



Advertisements
Présentations similaires
Réaliser en Java un programme client d’une Base de Données
Advertisements

Conception d’IHM en Java
1 Swing par la pratique contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique.
X.Blanc & J.Daniel Swing et Applet X.Blanc & J.Daniel
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
Les Interfaces Graphiques
Gestion des événements (suite)
Programmation événementielle
Audrey Occello Cédric Joffroy Anne-Marie Dery
Arbres Un premier exemple Contenu Rendu Ecouteurs Parcours
Composants de Swing JavaBeans Actions Boutons Icônes Bordures Curseurs
Tables Construire une table Modèle de table Filtrer un modèle 1.
Composants graphiques de Java
Page 1 Les applets Jacques Lonchamp. Page 2 Présentation Une applet est téléchargée à partir dune machine distante qui fournit le code. Ce chargement.
Introduction à Java - les « Threads » -
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours 5:Threads introduction Définition Création des Threads
Les Interfaces graphiques Les Swing. Les interfaces graphiques: Introduction Une application est une boîte noire. Prend des entrées et produit des sorties.
Les composants Graphiques Atomiques
Faisons une interface réactive.
Architecture Logicielle pour les IHM
Vos premiers pas en Swing
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
Swing et les Interfaces Graphiques
Les entrées /sorties en Java François Bonneville
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
1 1 Université Evry Val d'Essonne Y. Laborde Une calculatrice (sans MVC) fonctionnant sur la base d'un modèle en Java.
Écouteurs de click d'une fenêtre
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Exceptions (fin) Généricité
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Interface graphiques.
NSY102 1 Concurrence compléments Notes de cours Cnam Paris jean-michel Douin, douin au cnam point fr 19 Mars 2007.
Graphical User Interface (GUI)
Composite et Décorateur 1 Composite & décorateur Notes de cours java : les patterns Composite et Décorateur Cnam Paris jean-michel Douin Version du 1er.
Programmation par Objets et Java
Graphical User Interface
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
PHP GTK PHP…au delà du Web Paris, 28 novembre 2001 Armel FAUVEAU GLOBALIS media systems.
Design Pattern: Decorator
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Multi-Thread Jian-Yun Nie
Exceptions IFT1025: Programmation 2 Jian-Yun Nie.
Badr Benmammar Formation Développeur Java Thread et Swing Badr Benmammar
Formation Développeur Java Applet et interfaces graphiques avec AWT
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Cours2 Poo: rappels.
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
Android UIThread, Thread, Handler et AsyncTask
GWT - QuickStart V 1.0 / May. Mise en place de l’environnement Java : Version 1.4 minimum IDE Eclipse 3.3 Europa : lien (Eclipse J2EE recommandée)‏lien.
Java : Graphique Swing juin 2006 Brigitte Groléas.
Cours 7 Classes locales Clonage Divers: tableaux.
Cours 91 9 Interfaces graphiques avec awt. Cours 92 Plan Introduction : deux bibliothèques graphiques 1.Comment se dessine une fenêtre ?  Un exemple.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
14 La gestion d’événements
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction à la programmation objet avec java
Iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 Charte graphique.
 1) Il faut connaître le modèle et son fonctionnement  2) Définir le contrôle que l’on veut faire ouvrir, fermer, afficher, etc.) sur le modèle  3)
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
Présentation SWING Siwar hadj hassen Omar ben yahya.
Transcription de la présentation:

Java Swing

Principes de base Des composants graphiques (exemple: JFrame, JButton …) Hiérarchie de classes Des événements et les actions à effectuer (exemple presser un bouton) (Et d'autres choses…)

Principes Définir les composants (instance de classes) Les placer « à la main » (layout Manager) dans un JPanel ou un content pane ou en utilisant des outils comme eclipse ou netbeans Définir les actions associées aux événements (Listener) et les associer aux composants graphiques

Principes Dans une interface graphique, le programme réagit aux interactions avec l'utilisateur Les interactions génèrent des événements Le programme est dirigé par les événements (event-driven)

Afficher… Pour pouvoir être affiché, il faut que le composant soit dans un top-level conteneur: (JFrame, JDialog et JApplet) Hiérarchie des composants: arbre racine top-level

Exemple Correspond à la hiérarchie

Le code import java.awt.*; import javax.swing.*; public class TopLevel { /** * Affiche une fenêtre JFrame top level * avec une barre de menu JMenuBar verte * et un JLabel jaune */ private static void afficherMaFenetre() { //créer la Jframe //créer la JMenuBar //créer le Jlabel // mettre le JMenuBar et le Jlable dans la Jframe //afficher la Jframe }

Code public UnBouton() { super(new BorderLayout()); bouton = new JButton("Click"); bouton.setPreferredSize(new Dimension(200, 80)); add(bouton, BorderLayout.NORTH); label = new JLabel(contenu); label.setPreferredSize(new Dimension(200, 80)); add(label,BorderLayout.SOUTH); bouton.addActionListener(this); } public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().beep(); label.setText("clické "+ (++cmp)+ " fois");

Code private static void maFenetre() { JFrame frame = new JFrame("UnBouton"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComponent newContentPane = new UnBouton(); newContentPane.setOpaque(true); frame.setContentPane(newContentPane); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { //Formule magique javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { maFenetre(); });

Variante public class UnBoutonBis extends JPanel { //… bouton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().beep(); label.setText("clické " + (++cmp) + " fois"); } }); }

Hiérarchie des classes… POO-L3 H. Fauconnier

POO-L3 H. Fauconnier

Un exemple Un traceur de fonctions Une interface graphique swing

Organisation GrapheSwing met en place les composants swing contient un GraphePanel extension de Jpanel GraphePanel méthode paintComponent qui affiche le graphe de la fonction Graphe est la classe contenant le graphe et définissant une méthode draw pour l'affichage Cette méthode appelle tracer de la classe abstraite Traceur FonctionTraceur étend Traceur POO-L3 H. Fauconnier

Le main public static Graphe unGraphe() { public static void main(String[] args) { new GrapheSwing(unGraphe());} public static Graphe unGraphe() { PlotSettings p = new PlotSettings(-2, 2, -1, 1); p.setPlotColor(Color.RED); p.setGridSpacingX(0.5); p.setGridSpacingY(0.5); p.setTitle("Une parabole et une sinusoide"); Graphe graphe = new Graphe(p); graphe.functions.add(new Parabole()); graphe.functions.add(new FonctionTraceur() { public double getY(double x) { return Math.sin(x); } public String getName() { return "Sin(x)"; }); return graphe; POO-L3 H. Fauconnier

Composants Modèle Vue Contrôleur

Préliminaires… Lightweight et heavyweight composants Dépendent ou non du système d’interface graphique Lightweight écrit en Java et dessiné dans un heavyweight composant- indépendant de la plateforme Les heavyweight composants s’adressent directement à l’interface graphique du système (certaines caractéristiques dépendent du « look and feel »).

Look and feel Look and feel: Possibilité de choisir l’apparence de l’interface graphique. UIManager gère l’apparence de l’interface

Multithreading Attention au « modèle, contrôleur, vue » en cas de multithreading: Tous les événements de dessin de l’interface graphiques sont dans une unique file d’event-dispatching dans une seule thread. La mise à jour du modèle doit se faire tout de suite après l’événement de visualisation dans cette thread.

Plus précisément Swing prend en charge la gestion des composants qui sont dessinés en code Java (lightweight) Les composants AWT sont eux liés aux composants natifs (heavyweight) Swing dessine les composants dans un canevas AWT et utilise le traitement des événements de AWT

Suite Les threads Main application thread Toolkit thread Event dispatcher thread Toutes Les opérations d'affichage ont lieu dans une seule thread l'EDT

Principes Une tâche longue ne doit pas être exécutée dans l'EDT Un composant Swing doit s'exécuter dans l'EDT

Exemple public void actionPerformed(ActionEvent e){ try { Thread.sleep(4000); } catch (InterruptedException e) { } } Provoque une interruption de l'affichage pendant 4 secondes

Une solution public void actionPerformed(ActionEvent e){ try{ SwingUtilities.invokeLater(newRunnable( { public void run() { //opération longue } }); } catch (InterruptedException ie) {} catch (InvocationTargetException ite) {}

Le main Normalement la création d'une fenêtre ne devrait avoir lieu que dans l'EDT: public static void main(String[] args) { //Formule magique javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() {maFenetre(); } }); } invokeLater crée une nouvelle thread qui poste la thread crée dans l'EDT

Attendre le résultat: try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { show(); } }); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) {