Swing

38
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 informatique qui 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és Tableaux de bord Imprimantes Langages 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

Transcript of Swing

Page 1: Swing

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

Page 2: Swing

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

Page 3: Swing

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

Page 4: Swing

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

Page 5: Swing

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.

Page 6: Swing

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

Page 7: Swing

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.

Page 8: Swing

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é.

Page 9: Swing

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

Page 10: Swing

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

Page 11: Swing

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

Page 12: Swing

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

Page 13: Swing

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

Page 14: Swing

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));

Page 15: Swing

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

Page 16: Swing

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:

Page 17: Swing

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

Page 18: Swing

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

Page 19: Swing

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

Page 20: Swing

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

Page 21: Swing

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

Page 22: Swing

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

Page 23: Swing

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

Page 24: Swing

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

Page 25: Swing

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

Page 26: Swing

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

Page 27: Swing

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:

Page 28: Swing

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.

Page 29: Swing

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

Page 30: Swing

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

Page 31: Swing

Interface Graphique: Gestion des évènements

MouseMotionListener : Exemple

Swing 121 Swing 122

Interface Graphique: Gestion des évènements

TextListener : Exemple

Swing 123 Swing 124

Page 32: Swing

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

Page 33: Swing

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

Page 34: Swing

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

Page 35: Swing

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 :

Page 36: Swing

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

Page 37: Swing

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

Page 38: Swing

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