Date post: | 25-Jul-2015 |
Category: |
Documents |
Upload: | iman-autonome-l |
View: | 28 times |
Download: | 6 times |
IHM : Introduction
�Interactions Homme – Machine�Communication Homme – Machine�Dialogue Homme – Machine
Définition:
--ensemble des dispositifs matériels et logiciels permettant à un utilisateur d’interagir avec un système interactif
Swing 1
utilisateur d’interagir avec un système interactif
--un domaine de l’informatique qui s’intéresse à la conception des logiciels interactifs et de leurs interfaces qui s’appuie sur des connaissances en sciences humaines et sociales : psychologie, sociologie, ergonomie, en informatiquequi met au point des méthodes, des techniques, des outils
IHM : Introduction
L'IHM ne s'enseigne pas … elle s'apprend
Apprentissage par confrontation, mini-projet
Swing 2
Développer un logiciel
IHM : Historique
�1945-1970 : Dispositifs d’entrée-sortie limitésTableaux de bordImprimantesLangages de commandes
� 1963 : écran graphique et stylo optique� 1968 : première souris�1980 : applications grand public
Swing 3
�1980 : applications grand public
Évolution des interfaces :Clavier, souris, Interfaces graphiques, manipulation directe, 2D, 3D, …
IHM ?
• 1970 : Interface Homme/Machine– Apparition des interfaces graphiques– Informatique personnelle
• 1980 : Interaction Homme/Machine– Informatique outil
• 1990 : Interactions Humains-Machines– TIC : informatique de communication– TIC : informatique de communication
• 2000 : I. des Humains avec des Mondes– Informatique répandue, invisible, réalité virtuelle, réalité
augmentée, réalité mixte, interfaces tangibles• Dispositif matériel et logiciel lié à une application• Interaction homme – machine
– Relations entre l’humain et la machine par l’interface
Swing 4
Reproches aux informaticiens
• Les concepteurs informaticiens– S'adaptent uniquement sur le fonctionnement du système – traitent l’interface en dernier– pensent que tous les utilisateurs leur ressemblent– ne sont pas formés
– l’analyse de besoins, à travailler avec des utilisateurs– l’analyse de besoins, à travailler avec des utilisateurs– ne comprennent pas que les besoins évoluent au cours de
conception
Swing 5
Pourquoi étudier l’IHM ?
1. Économiques– 50 à 90 % des coûts de développement pour les d’applications
interactives2. Sociales
– des gens qui sont différents de vous utiliseront vos logiciels– des interfaces mal conçues coûtent cher
3. Scientifiques et techniques3. Scientifiques et techniques– Les interfaces utilisateurs sont difficiles à mettre au point
• Les gens sont inattendus– Existence de techniques, méthodes et démarches rigoureuses
4. Professionnelles– Vous aurez à travailler
• pour des entreprises qui font des logiciels pour des utilisateurs, pas seulement pour des machines
Swing 6
Évolution de la notion d'interface• élargissement des problématiques parallèle à l'évolution technique
– « conviviale », « utilisable », facile à comprendre et à utiliser– élément structurant les systèmes d ’informations
• écran de texte et clavier– interface dispositif matériel, échange d'information,
codage/décodage• interfaces graphiques• interfaces graphiques
– utilisateur, tâche, facteurs humains, langage• multimédia, capteurs, reconnaissance vocale,
– activité, acteurs humains, communication• papier électronique, tableau ou bureau interactif, médiaspace
– travail coopératif, machines comme élément d'un espace interactif
• informatique vestimentaire, réalité augmentée/ virtuelle, ordinateur évanescent, interface tangible/ sans coutureSwing 7
Concepts de base des interfaces graphiques
• WIMPS : Windows, Icones, Menus, Pointers
• Manipulation directe – souris, visualisation immédiate du résultat de la
manipulation– apprentissage rapide, efficace aussi pour les experts– limite les efforts de mémorisation– limite les efforts de mémorisation– permet l'expérimentation (vérification immédiate,
réversibilité)
Swing 8
En tant que concepteur…
Retenez que • Ce n’est pas à l’utilisateur de s’adapter à vos idées, certes
génialesMais• c’est au concepteur de s’adapter à l’activité de l’utilisateurPour cela il y a Pour cela il y a • Des sciences (humaines) : ergonomie (des logiciels),
psychologie, sociologie • Des méthodes : conception centrée utilisateur• Des techniques : entretiens, incidents critiques etc.
Swing 9
Qui construit des interfaces ?
• Une équipe – Pourquoi ?
• Idéalement– Graphistes– Spécialistes de l’interaction– Ergonomes– Ergonomes– Marketing– Rédacteurs techniques– Ingénieurs spécialisés dans les tests– Développeurs Informatiques– Utilisateurs
Swing 10
Exemples des interfaces
• C:\Program Files\Java\jdk1.6.0_23\demo\jfc\SwingSet2
Swing 11 Swing 12
Installer et configurer JAVA
� Télécharger et installer � jdk x.x.x_xx�Configurez l'environnement Java sous Windows
- Après l'installation de Java Development Kit sous Windows, et pour faciliter les taches de compilation et d’exécution il est nécessaire de le configurer.
�Effectuez les étapes suivantes pour rendre des outils Java accessible
1. Cliquez sur Démarrer> Panneau de configuration > Système
Swing 13
1. Cliquez sur Démarrer> Panneau de configuration > Système > Onglet ’avancé’
2. Cliquez sur le bouton ’variable d’environnement’. Vous obtenez la fenêtre des variables d’environnement, contenant une partir ’user’ et une partie ’système’.
3. Dans la partie ’user’, cliquez sur ’nouveau’ . Ajoutez une nouvelle variable PATH et associez la valeur suivante : C :\Program Files\Java\ jdk x.x.x_xx \bin ;%Path% .
Interface Graphique: awt & swing
�Java, permet de créer des interfaces graphiques homme machines (IHM).
�Tous les outils nécessaires pour réaliser des interfaces graphiques existent dans les deux paquetages suivants : java.awt et javax.swing.
�Les interfaces (IHM) font intervenir de nos jours des éléments que l'on retrouve dans la majorité des systèmes d'exploitation : les
Swing 14
que l'on retrouve dans la majorité des systèmes d'exploitation : les fenêtres, les listes de choix, les menus déroulants, les boutons, les boutons radios, etc...
awt =1ère boite à outil de javaawt: aspect change d'une plateforme à une autre.swing = extensionswing : faire que tout fonctionne de manière identique partout.
Interface Graphique: awt & swing
�awt (Abstract Window Toolkit) (java.awt):
�C'est pour construire des IHM que le package awt est inclus dans toutes les versions de Java.
�awt s'appuie sur les ressources systèmes
�Catégories de classes :
Swing 15
�Catégories de classes :
�graphique (couleurs, fontes, formes, …)�composants (Component) (fenêtres, boutons, menus, …)�gestionnaires (position des composants)
awt
Swing 16
swing
Swing 17
Mon premier exemple
Swing 18
Interface Graphique: Structure
�conteneurs: Japplet, JFrame, Jpanel, JSplitPane, JTabbedPane,...
�composants « atomiques »: JButton, Jlist, JPopupMenu
�gestionnaire de disposition : LayoutManager
Swing 19
�gestionnaire de disposition : LayoutManager
�interaction avec l’utilisateur : gestionnaire d’évènements
�Boite de dialogue
Interface Graphique: conteneurs
JFrame
�Dans une application Swing, on instanciera un cadre JFrame qui permet d’avoir une fenêtre principale.
�Une JFrame est une fenêtre avec un titre et une bordure.
Swing 20
�La JFrame est un composant qui contient tous les autres.
�La plupart des composants graphiques ont une taille par défaut, qui peut d'ailleurs être nulle.
Interface Graphique: conteneurs
Swing 21
Interface Graphique: conteneurs
�JFrame cadre = new javax.swing.JFrame(" Deuxième exemple "); on instancie ici la classe JFrame en passant au constructeur une chaîne de caractères pour le titre de la fenêtre. �panneau.setPreferredSize(new Dimension(324, 240)); le panneau ait 324pixels de largeur et 240 pixels de hauteur. �panneau.setBackground(Color.YELLOW); le panneau ait la couleur jaune pour couleur de fond.
Swing 22
le panneau ait la couleur jaune pour couleur de fond. �cadre.setContentPane(panneau); le containeur de la fenêtre soit un panneau. �cadre.setLocation(500, 500); : on positionne le cadre. �cadre.pack(); : la méthode pack: calcule la dimension de la fenêtre en fonction de ce qui est mis à l'intérieur. �cadre.setVisible(true); par défaut, une fenêtre est invisible ; on demande ici à ce que la fenêtre soit visible
�JLabel label = new JLabel("Bonjour"); on instancie ici un label en passant au constructeur une chaîne de caractères� cadre.add(label); l’ajout de label�cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
par défaut, lorsqu'on ferme une fenêtre, cela ne termine pas l'application. On demande par cette instruction que l'application se termine quand on ferme la fenêtre.
Interface Graphique: conteneurs
Swing 23
l'application se termine quand on ferme la fenêtre.
Interface Graphique: conteneurs
Swing 24
Interface Graphique: conteneurs
Swing 25
Interface Graphique: conteneurs
JPanel
� Un JPanel est un conteneur élémentaire destiné à contenir d'autres composants. Il est muni d'un gestionnaire de placement
� Il organise les éléments au fur et à mesure qu'ils sont intégrés à l'interface, de gauche à droite, à la manière des mots d'une phrase.
Swing 26
l'interface, de gauche à droite, à la manière des mots d'une phrase.
Interface Graphique: conteneurs
Swing 27
Interface Graphique: conteneurs
JTabbedPane
�Permet d’avoir des onglets
�Permet de mieux gérer l’espace de travail
�Un panneau à onglets est représenté par la classe JTabbedPane.
Swing 28
�Un panneau à onglets est représenté par la classe JTabbedPane.
� Il organise les éléments au fur et à mesure qu'ils sont intégrés à l'interface, de gauche à droite, à la manière des mots d'une phrase.
Interface Graphique: conteneurs
JTabbedPane : Constructeurs
JTabbedPane() : Création d'un panneau à onglets vierge. Si le nombre d'onglets devient important ces derniers se placent automatiquement sur plusieurs lignes.
JTabbedPane(int placement) : Création d'un panneau à onglets
Swing 29
JTabbedPane(int placement) : Création d'un panneau à onglets vierge. Les onglets, se place dans l'une des quatre orientations prévues suivant la constante spécifiée en argument : JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT ou JTabbedPane.RIGHT.
Interface Graphique: conteneurs
JTabbedPane : Constructeurs
JTabbedPane(int placement, int règle) : vous avez la possibilité de faire en sorte que les onglets, quel que soit leur nombre, reste systématiquement sur une seule ligne. Dans ce cas là, des flèches supplémentaires apparaissent afin que vous puissiez naviguer dans l'ensemble de vos onglets. Voici les deux constantes que vous
Swing 30
l'ensemble de vos onglets. Voici les deux constantes que vous pouvez alors utiliser : JTabbedPane.WRAP_TAB_LAYOUT (par défaut) ou JTabbedPane.SCROLL_TAB_LAYOUT.
Interface Graphique: conteneurs
JTabbedPane : Ajout de nouveaux onglets :
1- void addTab(String titre, Component contenu) : Ajout d'un nouvel onglet avec son titre, en spécifiant le composant enfant qui propose le contenu désiré.
2- void addTab(String titre, Icon icône, Component contenu) : 1 + une icône.
Swing 31
icône.
3- void addTab(String titre, Icon icône, Component contenu, String aide) : 2+une bulle d'aide qui s'activera lors du passage du curseur de la souris.
4- void insertTab(String titre, Icon icône, Component contenu, String aide, int emplacement) : On peut spécifier la position désirée dans l'ordre des onglets déjà établi.
Interface Graphique: conteneurs
JTabbedPane : Gestion des onglets :
1- void remove(Component contenu) : Suppression de l'onglet et de son contenu correspondant au composant choisi.
2- void remove(int index) : Suppression de l'onglet spécifié et de son contenu.
3- void removeAll() : Suppression de tous les onglets et de leur contenu. 4- void setBackgroundAt(int index, Color fond) : Proposer une couleur de
Swing 32
4- void setBackgroundAt(int index, Color fond) : Proposer une couleur de fond pour l'onglet sélectionné. 5- void setComponentAt(int index, Component contenu) : Proposer un autre contenu pour l'onglet sélectionné. 6- void setEnabledAt(int index, boolean actif) : Permet d'activer ou de
désactiver un onglet spécifique. 7- void setForegroundAt(int index, Color fond) : Proposer une couleur du
titre pour l'onglet sélectionné.
Interface Graphique: conteneurs
JTabbedPane : Le panneau à onglets:
8- void setIconAt(int index, Icon icône) : Proposer une nouvelle icône pour l'onglet sélectionné.
9- void setSelectedIndex(int index) : Sélectionne l'onglet.10-void setTitleAt(int index, String titre) : Spécifie le titre de l'onglet
sélectionné.11-void setToolTipTextAt(int index, String aide) : Spécifie la bulle d'aide
Swing 33
11-void setToolTipTextAt(int index, String aide) : Spécifie la bulle d'aide associé à l'onglet sélectionné.
Exemples:
Swing 34
Swing 35
Interface Graphique: conteneurs
JScrollPane:JScrollPane est un conteneur permettant de munir un composant de barres de défilement. Ceci permet de visualiser des composants plus grands que l'espace dans lequel ils sont visualisés. Les JScrollBars sont munies d'une stratégie d'affichage qui peut être :VERTICAL_SCROLLBAR_AS_NEEDED : la ScrollBar verticale n'est visible que si elle est nécessaire.VERTICAL_SCROLLBAR_NEVER : la ScrollBar verticale n'est jamais visible
Swing 36
VERTICAL_SCROLLBAR_NEVER : la ScrollBar verticale n'est jamais visibleVERTICAL_SCROLLBAR_ALWAYS : la ScrollBar verticale est toujours visibleHORIZONTAL_SCROLLBAR_AS_NEEDED : la ScrollBar horizontale n'est visible que si elle est nécessaire.HORIZONTAL_SCROLLBAR_NEVER : la ScrollBar horizontale n'est jamais visibleHORIZONTAL_SCROLLBAR_ALWAYS : la ScrollBar horizontale est toujours visible
Interface Graphique: conteneurs
JScrollPane: Constructeurs
JScrollPane( ) �Crée un JScrollPane sans composant vue, avec des politique horizontale et verticale AS_NEEDED
JScrollPane(Component vue ) � Crée un JScrollPane avec composant vue, avec des politique horizontale et verticale AS_NEEDED
Swing 37
JScrollPane(Component vue, int vPolitique, int hPolitique) � Crée un JScrollPane avec composant vue, une politique horizontale et une politique verticale
JScrollPane(int vPolitique, int hPolitique) � Crée un JScrollPane sans composant vue, mais avec une politique horizontale et une politique verticale
Interface Graphique: conteneurs
JScrollPane: quelques méthodesvoid setViewPortView( Component c) � Affecte le composant Scrollable à visualiser.
void setVerticalScrollBarPolicy(int p) �Affecte la stratègie d'affichage de la ScrollBar verticale. int getVerticalScrollBarPolicy()
Swing 38
void setHorizontalScrollBarPolicy( int p) �Affecte la stratègie d'affichage de la ScrollBar verticale.
int getHorizontalScrollBarPolicy()
void setWheelScrollingEnabled(boolean b) � Si b vaut true on peut scroller verticalement le composant avec la roulette de la souris.
Swing 39 Swing 40
Interface Graphique: conteneurs
JSplitPane :
Permet de diviser en deux l’espace zone
La barre de division qui apparait entre les deux composants peut être déplacée.
L'orientation du JSplitPane peut être :
Swing 41
L'orientation du JSplitPane peut être :
JSplitPane.HORIZONTAL_SPLIT � les deux composants sont alignés horizontalementJSplitPane.VERTICAL_SPLIT � les deux composants sont alignés verticalement
Interface Graphique: conteneurs
JSplitPane : Constructeurs
JSplitPane()� Crée un JSplitPane horizontal et à affichage non continu. JSplitPane(int orientation) �Crée un JSplitPane orienté suivant orientation et à affichage non continu. JSplitPane(int orientation, boolean continu)� Crée un JSplitPane orienté suivant orientation et continu si continu vaut true. JSplitPane(int orientation, boolean continu, Component cGauche, Component cDroit)
Swing 42
JSplitPane(int orientation, boolean continu, Component cGauche, Component cDroit) �Crée un JSplitPane orienté suivant orientation et continu si continu vaut true. Les deux composants sont cGauche et cDroit. JSplitPane(int orientation, Component cGauche, Component cDroit) �Crée un JSplitPane orienté suivant orientation et à affichage non continu. Les deux composants sont cGauche et cDroit.
Interface Graphique: conteneurs
JSplitPane : quelques Méthodes
int getDividerSize() �Retourne la taille de la barre de division.
void setDividerSize(int s)� Affecte la taille de la barre de division.
int getDividerLocation()�Retourne la position de la barre de division.
void setDividerLocation(int l) �Affecte la position (en valeur absolue) de la barre de
Swing 43
void setDividerLocation(int l) �Affecte la position (en valeur absolue) de la barre de division.
void setDividerLocation(double d)� Affecte la position (en valeur relative) de la barre de division.
double getResizeWeight() �Retourne le taux de redistribution de l'espace supplémentaire.
Exemple:
Swing 44
Swing 45
Interface Graphique: conteneurs
Box:
Le conteneur Box utilise le gestionnaire de layout �BoxLayout, mais ce gestionnaire de mise en page est automatiquement attribué, si vous n'avez jamais besoin de travailler de façon explicite.
Exemple:
Swing 46
Swing 47 Swing 48
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Les panneaux contiennent
� des étiquettes (JLabel)�un champ de texte (JTextField)�une liste (JList) et une combobox (JComboBox)�des boutons à cocher (JCheckBox)
Swing 49
�des boutons à cocher (JCheckBox)�des bordures (TitledBorder)�des boutons radio (JRadioButton)�des boutons ordinaires (JButton)�zone de saisie multilignes (JTextArea)� JScrollBar…
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Jlabel :Un Label affiche une seule ligne de texte (étiquette) non modifiable.En général, les étiquettes ne traitent pas d'événements.
�Pour afficher un texte, on peut utiliser la méthode setText ou une version surchargée du constructeur.
�Pour afficher une image, on doit utiliser un composant intermédiaire,
Swing 50
�Pour afficher une image, on doit utiliser un composant intermédiaire, l’icone (ImageIcon).
�Le constructeur ImageIcon est capable de charger des images jpeg,gif et png.
�Le constructeur de JLabel est surchargé pour accepter un objetImageIcon en paramètre.
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Jlabel :
Emplacement :
1. JLabel.BOTTOM2. JLabel.CENTER3. JLabel.LEFT4. JLabel.RIGHT
Swing 51
4. JLabel.RIGHT5. JLabel.TOP
Exmple:
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Swing 52
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextField :
�Le champ de texte est un dispositif d'entrée de texte sur une seule ligne.�Il est source d’ActionEvent�On peut définir un champ de texte comme étant éditable ou non.
Méthodes :
Swing 53
Méthodes :void setText(String text) String getText() pour mettre ou retirer du texte dans le TextField
Exemple:
Swing 54
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Swing 55
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JList : Constructeurs :JList() // modèle videJList(ListModel dataModel) // cas généralJList(Object[] listData) // tableauJList(Vector listData) // vecteur
Création d’une liste à partir d’un tableau (liste non modifiable) :
Swing 56
String[] data = {"A", "B", "C", "D"};JList liste = new JList(data);
Accès au modèle, donc au contenu:
for(int i = 0; i < list.getModel().getSize(); i++) {System.out.println(list.getModel().getElementAt(i));
Interface Graphique: LES COMPOSANTS GRAPHIQUES
La classe JComboBox permet la sélection d'une entrée parmis une séquence.�Le composant est constitué de deux parties :• un éditeur qui affiche la sélection courante et permet ou non d'entrée des valeurs et• une liste déroulante qui affiche les choix possibles.� Deux modes de fonctionnement différents :• Non éditable : ComboBoxModel
Swing 57
• Non éditable : ComboBoxModel• Editable : MutableComboBoxModel
Exemple:
Swing 58
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JCheckBox :
� boîte à cocher qui peut être sélectionnée ou non.�Il est source d’ActionEvent�On peut définir un champ de texte comme étant éditable ou non.Méthodes :La sélection ou la déselection est notifiée par un ItemEvent à un écouteur implémentant l’interface ItemListener.
Swing 59
implémentant l’interface ItemListener.
la méthode getStateChange() de ItemEvent retourne une constante : ItemEvent.DESELECTED ou ItemEvent.SELECTED.
la méthode getItem() de ItemEvent renvoie la chaîne contenant l'étiquette de la case à cocher considéréeExemple:
Swing 60
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Swing 61
Interface Graphique: LES COMPOSANTS GRAPHIQUES
TitledBorder :
�Une bordure permettant l'inclusion d’une chaîne de caractères
Exemple:
Swing 62
Swing 63
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JRadioButton :
� possède des méthodes constructeurs dont les arguments et lesfonctionnalités sont les mêmes.
�Pour les organiser en groupe, créer une classe d’objet : ButtonGroup
Swing 64
Exemple:
Swing 65
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JButton : Constructeurs :
JButton (String text);JButton (ImageIcon picture);JButton (String text, ImageIcon picture);
Méthodes :
Swing 66
void addActionListener (ActionListener object);void setText (String text);void setActionCommand (String cmd);void setIcon (ImageIcon icon);void requestFocus();
Exemple:
Swing 67
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Swing 68
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextArea : zone de texte plusieurs lignes
Constructeurs.JTextArea() Construit une nouvelle instance de JTextArea. JTextArea(int l, int c) Construit une nouvelle instance de JTextArea, lignes l et c colonnes. JTextArea(String texte) Construit un JTextArea avec un texte initial. JTextArea(String texte, int l, int c)
Swing 69
JTextArea(String texte, int l, int c)Méthodes:String getText() String getText(int d, int l) String getSelectedText() void setText(String t) void append(String t) void insert(String t, int pos) void replaceRange(String t,int d,int f) int getColumns( )void replaceSlection(String t) void setEditable(boolean)Exemple:
Swing 70
Swing 71
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JScrollBar : barre de défilement
Swing 72
Swing 73
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JPasswordField : composant qui permet l'édition d'une ligne simple dont les caractères sont cachésConstructeurs:JPasswordField() �Construction d'un JPasswordField. JPasswordField(Document doc, String txt, int c) JPasswordField(int c) �Construction d'un JPasswordField avec un nombre de colonnes maximum. …
Swing 74
…Méthodes :char[] getPassword()� Retourne un tableau de caractères contenant le mot de passe saisi.void setEchoChar(char c) �Change le caractère écho des caractères tapés.char getEchoChar()Exemple:
Swing 75
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JEditorPane : permet de saise de texte riche multi−lignes. Ce type de texte peut contenir des informations de mise enpages et de formatage.Exemple:
Swing 76
Swing 77
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JProgressBar :
Ce contrôle est une barre de progression.La classe JProgressBar possède plusieurs styles : BORDER, INDETERMINATE, SMOOTH, HORIZONTAL, VERTICAL
Exemple:
Swing 78
Swing 79
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JSlider:
Les JSlider permettent la saisie graphique d’un nombre. Un JSlider doit contenir les bornes max et min.
Exemple:
Swing 80
Swing 81
Interface Graphique: JTree
Le composant JTree permet de visualiser une structure d'arbre.Une instance de JTree ne contient pas de données, mais simplement une vue de données.Arbre :Un arbre est créé à partir d’un TreeModelIl existe plusieurs modèles de sélection
�sélection d’un seul élément�sélection de plusieurs éléments contigus
Swing 82
�sélection de plusieurs éléments contigus�sélection de plusieurs éléments disparates
On peut indiquer un CellRenderer pour afficher une cellule de façonparticulière.On peut indiquer un CellEditor pour changer la valeur d’une cellule
Exemple:
Swing 83 Swing 84
Interface Graphique: JTable
JTable :
�JTable affiche des données dans un tableau�TableModel régit la gestion des données�On peut fournir les données dans un tableau bidimensionnel d’objets :Object[][]et utiliser le DefaultTableModel,mais il vaut mieux étendre AbstractTableModel.
Swing 85
�La sélection est régi par une modèle de sélection�De plus, il y a un modèle de colonnes.�Un tableau est entouré d’ascenseurs, en général.
Exemple:
Interface Graphique: JTable
Constructeurs :JTable() modèles par défaut pour les trois modèlesJTable(int numRows, int numColumns) avec autant de cellules videsJTable(Object[][] rowData, Object[] columnNames) avec les valeurs des cellules de rowData et noms de colonnes columnNames.JTable(TableModel dm) avec le modèle de données dm, les autres par défaut.JTable(TableModel dm, TableColumnModel cm) avec modèle de
Swing 86
JTable(TableModel dm, TableColumnModel cm) avec modèle de données et modèle de colonnes fournis.JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) Les trois modèles sont fournis.JTable(Vector rowData, Vector columnNames) ici, les données sontfournies par colonne.
Exemple :
Swing 87 Swing 88
Interface Graphique: Menu
Menu :Pour créer un menu déroulant, il y a essentiellement 3 opérations :�création de la barre menu :
JMenuBar menuBar=new JMenuBar();�création des menus :
JMenu couleur=new JMenu("couleur"); menuBar.add(couleur);JMenu taille=new JMenu("taille"); menuBar.add(taille);
�création des options :
Swing 89
�création des options :rouge=new JMenuItem("rouge");rouge.addActionListener(this);couleur.add(rouge);bleu=new JMenuItem("bleu");bleu.addActionListener(this);couleur.add(bleu);
Naturellement, il faudra ajouter la barre des menus à la fenêtre, et adjoindre aux diférentes options comme indiqué ci-dessus.Exemple 1:
Swing 90
Swing 91
Interface Graphique: Menu �Exemple 2
Swing 92
Swing 93
Interface Graphique: JFileChooser
Un JFileChooser permet de sélectionner un fichier en parcourant l’arborescence du système de fichier.Exemple :
Swing 94
Swing 95
Interface Graphique: JColorChooser
Un JColoChooser permet de choisir une couleur.Exemple :
Swing 96
Swing 97
Interface Graphique: gestionnaire de disposition
� Layout est une technique qui permet de placer des composants dans un container.�Layout place les composants les uns par rapport aux autres.�Layout organise les composants lorsque la taille du container varie.�Layout gère le positionnement.
Swing 98
Gestionnaires les plus courants :
BorderLayout, BoxLayout, CardLayout, FlowLayout, GridLayout, GridBagLayout.
Interface Graphique: BorderLayout
�Le BorderLayout sépare un container en cinq zones: nord, sud,
ouest, est, et centre.
�"nord" et "sud" occupent toute la largeur,
�"ouest" et "est" occupent la hauteur qui reste,
�"centre" occupe la place restante.
Swing 99
�Lorsque l’on agrandit le container, le centre s'agrandit. Les autres
zone prennent uniquement l’espace qui leur est nécessaire.
Exemple:
Swing 100
Interface Graphique: BoxLayout
�Un BoxLayout permet d’empiler les composants du container
( verticalement ou horizontalement)
� BoxLayout donne à chaque composant la place qu’il demande
�En utilisant ce layout on peut rajouter des blocs invisible.
Exemple:
Swing 101 Swing 102
Interface Graphique: CardLayout
� CardLayout aide à construire des boîtes de dialogue composées
de plusieurs onglets.
�Un onglet se compose généralement de plusieurs contrôles : on
insère des panneaux dans la fenêtre utilisée par le CardLayout.
Exemple:
Swing 103 Swing 104
Interface Graphique: FlowLayout
� Par défaut le gestionnaire de présentation d'un panel est de type
FlowLayout.
�Un FlowLayout permet de ranger les composants dans une ligne.
�Si l’espace est trop petit FlowLayout ajoute une ligne de plus.
Exemple:
Swing 105 Swing 106
Swing 107
Interface Graphique: GridLayout
� GridLayout établit un réseau de cellules identiques qui forment
une sorte de quadrillage invisible : les composants sont organisés en
lignes et en colonnes.
�Les éléments insérés dans la grille ont tous la même taille.
�Les cellules du quadrillage se remplissent de droite à gauche ou de
haut en bas.
Swing 108
haut en bas.
Exemple:
Swing 109
Interface Graphique: GridBagLayout
� GridBagLayout (grille étendue) est le plus riche en fonctionnalités : le conteneur est divisé en cellules égales mais un composant peut occuper plusieurs cellules de la grille et il est possible de faire une distribution dans des cellules distinctes.
� Un objet de la classe GridBagConstraints permet de donner les indications de positionnement et de dimension à l'objet GridBagLayout.
Swing 110
GridBagLayout.
Exemple:
Swing 111
Interface Graphique: Gestion des évènements
� Il est possible d’affecter un évènement à un objet grâce à des classes spéciales appelées listeners. Ces classes nous permettent d’écouter les actions effectuées sur un objet swing et de lancer la fonction adéquat à l’action produite.
�Les deux classes : java.awt.event.MouseMotionAdapter et java.awt.event.ActionListener nous permettent l’écoute des actions.
Swing 112
�Lorsqu'un événement se produit :
�il est reçu par le composant avec lequel l'utilisateur interagit (un bouton, un curseur, un champ de texte, ...).
�Ce composant transmet cet événement à un autre objet, un écouteur qui possède une méthode pour traiter l’événement.
Interface Graphique: Gestion des évènements
� Les événements utilisateurs sont gérés par plusieurs interfaces EventListener.
�Les interfaces EventListener permettent à un composant de générer des événements utilisateurs. Une classe doit contenir une interface auditeur pour chaque type de composant :
Swing 113
ActionListener : clic de souris ou enfoncement de la touche Enter
ItemListener : utilisation d'une liste ou d'une case à cocher
MouseMotionListener : evénément de souris, …
WindowListener : événement de fenêtre
TextListener : Changement de valeur dans une zone de texte
Interface Graphique: Gestion des évènements
AdjustmentListener :Déplacement d'une échelle
ComponentListener :Savoir si un composant a été caché, affiché …
ContainerListener : Ajout d'un composant dans un Container
FocusListener : Pour savoir si un élément a le "focus"
KeyListener : Pour la gestion des événements clavier
Swing 114
Interface Graphique: Gestion des évènements
Interface ActionListener
void actionPerformed(ActionEvent e)
Interface MouseListener
void mousePressed(MouseEvent e)
Swing 115
void mousePressed(MouseEvent e)
void mouseReleased(MouseEvent e)
void mouseClicked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void actionPerformed(ActionEvent e)
Interface Graphique: Gestion des évènements
ActionListener : Exemple 1
Swing 116
Interface Graphique: Gestion des évènements
ActionListener : Exemple 2
Swing 117 Swing 118
Interface Graphique: Gestion des évènements
ItemListener : Exemple
Swing 119 Swing 120
Interface Graphique: Gestion des évènements
MouseMotionListener : Exemple
Swing 121 Swing 122
Interface Graphique: Gestion des évènements
TextListener : Exemple
Swing 123 Swing 124
Interface Graphique: Gestion des évènements
AdjustmentListener : Exemple
Swing 125
Interface Graphique: Gestion des évènements
ComponentListener : Exemple
Swing 126
Swing 127
C:\Program Files\Java\jdk1.6.0_23\demo\jfc\SwingSet2\SwingSet2.exe
Swing 128
Interface Graphique: Boite de dialogue
�Les boîtes de dialogue servent à envoyer un message à l'utilisateur, demander
une confirmation, saisir une information ...
�Une boite de dialogue dépend d’une Jframe.
�Une boite de dialogue peut être modale (l’utilisateur doit répondre avant de faire autre chose) ou non.
Swing 129
Objectif :
�Création de l’objet boite de dialogue
�Affichage d’une boite de dialogue
�Gestion du dialogue avec l’utilisateur
�Transfert et récupération d’information
Interface Graphique: Boite de dialogue
Classe JOptionPane :
�JOptionPane composant léger et classe fille de Jcomponent.
� JOptionPane permet d’avoir les cas les plus fréquents de boites de dialogue.
�La classe Jdialog (composant lourd) traite les non prévus par JOptionPane.
Méthodes :
showMessageDialog : Message d'information avec bouton OK
Swing 130
showMessageDialog : Message d'information avec bouton OK
showConfirmDialog : Demande de confirmation avec boutons Oui, Non et
Cancel
showInputDialog : Saisie d'une information sous forme de texte, de choix
dans une liste ou dans une combobox
showOptionDialog : Fenêtres plus complexes car on peut pas configurer les
composants
Interface Graphique: Boite de dialogue
�Les 4 méthodes de JOptionPane sont surchargées.
�Chaque type de boite de dialogue a un aspect différent donné par :
� Icône placée en haut à gauche de la fenêtre
�Des boutons placés en bas de la fenêtre
�showMessageDialog nous permet de choisir :
� le contenu du message �le titre de la boîte,
Swing 131
� le contenu du message �le titre de la boîte,
� le type d’icône, parmi la liste suivante :
Interface Graphique: Boite de dialogue
showMessageDialog : Exemple 1
Swing 132
Interface Graphique: Boite de dialogue
showMessageDialog : Exemple 2
Swing 133
Interface Graphique: Boite de dialogue
showMessageDialog : Exemple 3
Swing 134
Swing 135
showMessageDialog : Exemple 4
Swing 136
Swing 137
Interface Graphique: Boite de dialogue
� showConfirmDialog : Une boîte de confirmation offre à l'utilisateur un choix de type oui/non.
�Une boîte de confirmation est construite à l'aide de la méthode de classe
showConfirmDialog de la classe JOptionPane.
Exemple:
Swing 138
Interface Graphique: showConfirmDialog
Swing 139
Interface Graphique: showConfirmDialog
� Il existe une autre variante de la méthode showConfirmDialog qui permet en outre de choisir le titre de la boîte, ainsi que la nature des boutons :
Swing 140
Exemple :
Interface Graphique: showConfirmDialog
Swing 141 Swing 142
Interface Graphique: Boite de dialogue
� showInputDialog: La boîte de saisie permet à l’utilisateur de fournir une information sous la forme d’une chaîne de caractères. La méthode showInputDialogde la classe JOptionPane vous permet de gérer automatiquement le dialogue avec l’utilisateur.
Exemple 1 :
Swing 143
Interface Graphique: Boite de dialogue
Swing 144
Interface Graphique: showInputDialog Exemple 2 :
Swing 145
Interface Graphique: showInputDialog Exemple 2 :
Swing 146
Interface Graphique: Boite de dialogue
� showOptionDialog : permettant un choix d’une valeur parmi une liste, par l’intermédiaire d’une boîte combo.
Exemple 1 :
Swing 147 Swing 148
Interface Graphique: showOptionDialog : Exemple 2
Swing 149
Interface Graphique: showOptionDialog
Recherche :
1- Les boîtes de dialogue personnalisées : JdialogExposé + rapport pour chaque groupe formé de 5 étudiants
2- environnement de développement intégré :Jbuilder
Swing 150
2- environnement de développement intégré :Jbuilder
3- graphiques: JCanvas /convas