Les Interfaces graphiques Les Swing. Les interfaces graphiques: Introduction Une application est une boîte noire. Prend des entrées et produit des sorties.

Slides:



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

Conception d’IHM en Java
Conception d’IHM en Java
1 Swing par la pratique contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique.
Formation universitaire à .NET: Introduction à C#
X.Blanc & J.Daniel Swing et Applet X.Blanc & J.Daniel
Les Interfaces Graphiques
Sérialisation des objets
Introspection et Réflexion Manipulation dynamique de code Java.
Audrey Occello Cédric Joffroy Anne-Marie Dery
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Gestionnaires de géométrie
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.
(Classes prédéfinies – API Java)
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 La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Les composants Graphiques Atomiques
Programmer en JAVA par Tama
Vos premiers pas en Swing
Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Retour sur MVC. Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Vos premiers pas en Swing
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Par Fabrice Pasquier Cours IV
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Écouteurs de click d'une fenêtre
Langage Oriente Objet Cours 4.
Python Interfaces graphiques
Cours d ’Informatique, DEUG 2 MASS/MIASS
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Interface graphiques.
Graphical User Interface (GUI)
Langage Oriente Objet Cours 2.
FICHIERS : Définition : Algorithme général:
Design Pattern: Decorator
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Formation Développeur Java Applet et interfaces graphiques avec AWT
Java Swing.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
CSI1502 Principes fondamentaux en conception des logiciels
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
TYPES DE COMPOSANTES SWING Cours 420-B43. On peut distinguer 3 Niveaux 3 niveaux Haut niveau : toute application graphique doit comprendre au moins une.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
11/04/ L'héritage Cours 7 Cours 7.
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
Interface graphique PO2 ( ) Chapitre 3 Gestionnaires géométrie.
Tutorat en bio-informatique
Entrées / Sorties.
Les sockets.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Héritage Conception par Objet et programmation 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)
Cours d’introduction à Java Christophe Vaudry IUT - Cycle IRISM Année
Projet Java : La classification périodique des éléments sous forme d’Applet Projet réalisé en 2006 par : BESSON Sandra FLOREA Alina FOUCAULT Julie SALLOT.
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
Les vues O.Legrand G.Seront. Les vues Dans Android, une ihm est composée de vues. Ces vues.
Présentation SWING Siwar hadj hassen Omar ben yahya.
Transcription de la présentation:

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 utilisateurs ne sont pas des programmeurs. Nécessité dun mécanisme dinteraction entre lutilisateur et lapplication: –Echanger les données. –Echange de contrôle.

Solution la plus basique: les Intput/output Stream Vous pouvez passer par des objets de gestion de flux ou de données pour interagir avec lutilisateur. Saisir les données dans un fichier ou à partir du clavier (System.in, InputStream). affichage des résultats sur la console ou dans des fichiers (System.out et OutputStream).

Inconvénients: Très lourde (beaucoup de code pour peut de chose). Peu adaptée pour les interactions de type contrôle. Pas du tout intuitive: il faut connaître pour pouvoir lutiliser certains types de données ne peuvent être gérés en tant que flux. Solution : Les interfaces graphiques

Faire une interface graphique Comment construire un écran graphique ? 1. Comment gérer les événements ? 1. Comment maintenir la cohérence entre les objets applicatifs / objets graphiques ?

1.Définition des écrans ! Une application = plein d écrans graphiques Un écran graphique = 1 arbre de composants graphiques La racine = La fenêtre Les feuilles = des composants atomiques (button, List, TextField…) Les nœuds = des conteneurs (des zones pour mettre des composants atomiques)

Exemple: très simple fenêtre :Frame Bouton de commande: Button Zone de texte:TextField Caption: Label

Exemple : un arbre de composant graphique nom : Label post: TextField ????? ajout : Buttonl saisir: Frame Racine est écran Les feuilles composants atomiques Les nœuds des containeurs

Étape1: Comment construire des écrans Graphiques ? Java offre une « pléthora » de composantes graphiques. Deux packages java.awt.*; javax.swing.*; Le package swing est une extension de awt On peut les classer selon trois catégories –Les composantes écrans –Les composantes de gestion demplacement: les containers –Les composantes graphiques atomiques. –Les composantes de type menus.

Une vue partielle sur le modèle de classe du package swing JFrame Panel (from awt) JWindow JButton (from awt) JList JTextField Container (from awt) JComponent (from awt) component[] TextComponent (from awt) Les composants atomiques Une classe abstraite! Les composants composites ! Pas de nouvelles fenêtres

Les composants graphique de haut niveau ! Les fenêtres graphique (Jframe) Les sous-fenêtre (JInternalFrame) Les containers Les composants de gestion demplacement (Les Layout). JPanel

« Interface » WindowConstants Les Fenêtres Graphiques (JFrame) La classe qui permet de créer des fenêtres Cest lobjet racine Sous classe de la classe Frame de awt. Elle maintient un objet de gestion de composants. JFrame Frame (awt) « Interface » RootPaneContainer JRootPane

Les constructeurs de JFrame Deux constructeurs: 1.public JFrame() 2.public JFrame(String titre) Exemple: public static void main(String[] args) { //mode daffichage par défaut (mode java) JFrame.setDefaultLookAndFeelDecorated(true); Jframe e= new JFrame(« Ecran de saisie Employé"); e.setSize(300,40);//spécification de la taille e. show(); //affiche la composante de type écran en mode java } Hauteur=40 Largeur=300

Deuxième méthode Parfois, vous avez besoin dassocier des données ou des méthodes à des écrans Vous voulez une type de fenêtre personnalisée. Solution: ………..lhéritage Exemple : créer une classe EcranEmp qui prend en paramètre un employé dont le titre sera initialisé comme suit : ceci est lécran de lemployé XXXX public class Employé {String nom;…. public Employé(String n) {nom=n;} public String toString() {return nom;}} ********************************************************** public class EcranEmp extends JFrame { Employé emp; public EcranEmp(Employé emp) { super("ceci est l'écran de l'employé: "+emp.toString()); this.emp=emp;}} ***************************************************************** public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); Employé emp=new Employé("Harry"); EcranEmp eemp=new EcranEmp(emp); eemp.setSize(300,40); eemp.show();}

qq méthodes de la classe Jframe Personnaliser le comportement du bouton de fermeture –Par défaut rend la fenêtre invisible – setDefaultCloseOperation(int ); –Trois constantes: JFrame.DISPOSE_ON_CLOSE JFrame.DO_NOTHING_ON_CLOSE JFrame.HIDE_ON_CLOSE JFrame.EXIT_ON_CLOSE Show() elle dessine la fenêtre et tous les objets appartenant a la fenêtre setLocation(x,y); setLocationRelativeTo(Component); Pack() calcule automatiquement la taille minimale. setIconImage(new imageIcon(uriImage).getImage())

Quatre modèles daffichages Java Look & Feel GTK Look & Feel MacOS Look & FeelWindows Look & Feel La gestion daffichage est gérée par UIManager UIManager: intermédiaire entre les composantes java et le système daffichage de la machine Trois modes : mode programme, commande en ligne ou en cours dexécution Méthode static : UIManager.setLookAndFeel(NomClassLookAndFeel) try { //affichage mode GTK UIManager.setLookAndFeel( "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); //affichage mode java UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { }

Comment ajouter des composants dans un JFrame?(1) Chaque JFrame maintient un conteneur dobjets graphiques (Container). Le container de JFrame est JRootPane. Le JRootPane maintient une hiérarchie de conteneur comme suit: –JRootPane –JLayeredPane –JContentPane –JGlassPane

Comment ajouter des composants dans un JFrame?(2) il ne faut pas ajouter des composants directement dans lobjet JFrame: passer par sont conteneur. getContentPane(): Container Par défaut cest le JContentPane. Utilisez la méthode add(Component). Vous pouvez ajouter tout sauf des composants de Type JFrame. les objets sont ajoutés sur le plan JLayeredPane: en couche

Exemple: ajouter un label dans une fenêtre public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame emp=new JFrame( " fenêtre avec des composants dedans"); Container Con=emp.getContentPane(); Con.add( new JLabel("je suis un composant Dans une fenêtre")); emp.pack();emp.show(); }

Cas particulier: Ajouter des sous-écrans: Vous pouvez ajouter des sous fenêtres à une fenêtre. Il faut changer le JContentPane par un JDesktopPane …..considérer la fenêtre comme lécran de machine Sous Classe de JLayeredPane….. Les sous fenêtres sont de type JInternalFrame JInternalFrame se comporte exactement comme un JFrame (ajouter des composants …..).

JInternalFrame & JDesktopPane public JDesktopPane(){} –Il maintient également toutes les méthodes et constantes des containers –La méthode add est valable Public JInternalFrame(String titre, boolean resizable, boolean closable, boolean maximazable). Une fois fait Les JInternalFrame sont manipuler de la même manière que les JFrame: ajout passe par le JContentPane etc…

Exemple: public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame emp=new JFrame("fenêtre intérieur"); emp.setContentPane(new JDesktopPane()); JInternalFrame sf1=new JInternalFrame("sous fenêtre 1",true,true,true); JInternalFrame sf2=new JInternalFrame("sous fenêtre 2",true,true,true); emp.getContentPane().add(sf1); emp.getContentPane().add(sf2); sf1.setVisible(true); sf2.setVisible(true); sf1.setSize(100,40); sf2.setSize(100,40); emp.setSize(200,100); emp.show(); }

Comment placer les objets ? Une fenêtre dispose dun ensemble de containers. Le container des composants est JContentPane (getComponentPane). Pas de placement absolu i.e. pas de button1 en x=3, y=4 Chaque container délègue la gestion des emplacements de composants à une Classe de type Layout

Les Layout & les Containeurs Chaque container dispose dun gestionnaire demplacement. Les gestionnaires demplacement sont: –Celles de awt: GridLayout BorderLayout –Spécifique à swing BoxLayout FlowLayout SpringLayout

Comment changer le Layout Chaque containeur maintient une méthode pour définir lobjet Layout. Par défaut le JContentPanel maintient un FlowLayout. ObjetContainer.setLayout(objetLayout) La méthode add(…) change de type de paramètre selon les objets Layout

BorderLayout Constructeur: –public BorderLayout(); Divise le containeur en cinq parties Add( « placement »,component )

Exemple: public static void main(String [] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame layout=new JFrame("BorderLayout dans le ContentPane de la fenêtre"); layout.getContentPane().setLayout(new BorderLayout()); layout.getContentPane().add(BorderLayout.NORTH,new JButton("je suis au Nord")); layout.getContentPane().add(BorderLayout.SOUTH,new JButton("je suis au Sud")); layout.getContentPane().add(BorderLayout.CENTER,new JButton(« je suis au Centre")); layout.getContentPane().add(BorderLayout.EAST,new JButton("je suis à l'East")); layout.getContentPane().add(BorderLayout.WEST,new JButton("je suis à l'Ouest")); layout.pack(); layout.show(); }

GridLayout Positionner les objets graphiques dans des cellules dune grille i.e matrice. Découper lespace de container en cellule a espace égales. Il faut spécifier le nb ligne et colonne dans le constructeur (la valeur 0 signifie une gestion dynamique). Les objets sont ajoutés ligne par ligne de gauche à droite selon lordre dajout dans le programme.

Exemple: Ecrire un programme qui affiche 6 boutons en grille: –Déclarer une fenêtre –Obtenir son JContentPane –Changer le gestionnaire demplacement en gridLayout –Ajouter les 6 bouton. –Afficher la fenêtre JFrame GLF=new JFrame("GridLayout exemple"); Container JCP=GLF.getContentPane(); GridLayout GL=new GridLayout(2,3) JCP.setLayout(GL); for(int i=0;i<GL.getRows();i++) for(int j=0;j<GL.getColumns();j++) JCP.add(new JButton(i+","+j)); GLF.pack(); GLF.show();

Résumons nous: Une fenêtre est un objet de type JFrame ou une de ses sous-classe. Pour ajouter des composants graphique il faut passer par le Container: – getComponentPane() pour obtenir le container – add(Component) pour ajouter des objets graphiques Pour gérer lemplacement des objets dans le container utilisez les objets XXXXLayout. –Construire un objet XXXXLayout. –Affecter au container ContainerOb.setLayout(layoutOb).

Un autre container: JPanel Vous pouvez utiliser vos propre container, mais…. Il faut les ajouter au container de la fenêtre Le JPanel vous permet de gérer lespace dans une fenêtre. Il peuvent définir des formats de placement différent. Vous ajoutez vos objets directement dans le JPane.

qq méthodes de JPanel Constructeur –new JPanel() –New JPanel(Layout) La méthode setLayout(Layout) La méthode add(Component) Les JPanel sont des composants et peuvent simbriqués entre elles. Les JPanel napparaissent pas à lecran leurs rôle se limite à une découpage dune espace dffichage. Pour le rendre visible il faut ajouter un objet de type Border : setBorder(BorderFactory.xxxx)

Exemple: public static void main(String[] args) {// création de la fenêtre et récupération de son caontainer JFrame.setDefaultLookAndFeelDecorated(true); JFrame JPF=new JFrame("Jpanel Exemple"); Container JCP=JPF.getContentPane(); //changer le Layout et la couleur du fond du container de la fenêtre JCP.setLayout(new BorderLayout()); JCP.setBackground(Color.green); // construire le JPanel avec son objet Layout JPanel panel=new JPanel(new GridLayout(2,2,10,10)); // ajout des composants graphiques panel.add(new JButton("0.0")); panel.add(new JButton("0.1")); panel.add(new JButton("1.0")); panel.add(new JButton("1.1")); panel.setOpaque(true); //ajout de la bordure et changer la couleur du fond panel.setBackground(Color.yellow); panel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.BLACK,3),"je suis un panel crée par utilisateur")); panel.setSize(100,100); //attention !!!!!!! ajout du JPanel au container de la fenêtre JCP.add(BorderLayout.SOUTH,panel); JPF.setSize(140,140); JPF.show();

Excercice1: Écrivez une méthode main() qui affiche la fenêtre suivante:

Solution: Créer un objet Jframe Mettre à jours le gestionnaire de placement (GridLayout(2,1)). Mettre ajour la couleur de fond du panel de la fenêtre Créer deux JPanel avec la bordure Mettre à jours les couleurs de fonds Ajouter les JPanel dans la fenêtre Enfin afficher la fenêtre // création de la fenêtre et récupération de son caontainer JFrame.setDefaultLookAndFeelDecorated(true); JFrame JPF=new JFrame("Ecercice Jpanel"); Container JCP=JPF.getContentPane(); //changer le Layout et la couleur du fond du container de la fenêtre JCP.setLayout(new GridLayout(2,1,10,10)); JCP.setBackground(Color.green); //Création de deux panel, mise à jours de leurs couleur de fond JPanel panel1=new JPanel(); JPanel panel2=new JPanel(); panel1.setBackground(Color.yellow); panel2.setBackground(Color.BLUE); // ajout de la bordure (ligne) et ajouter du texte panel1.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.BLACK,3),"je suis un panel jaune vide")); panel2.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.BLACK,3),"je suis un panel bleue vide")); // ajout des deux JPanel au panel de la fenêtre JCP.add(panel1); JCP.add(panel2); JPF.setSize(120,220); JPF.show();