0% ont trouvé ce document utile (0 vote)
2 vues50 pages

API Swing

Ce document présente les gestionnaires de placement et la gestion des événements dans l'API Swing de Java. Il décrit les différents types de gestionnaires de placement, tels que FlowLayout, BorderLayout et GridLayout, ainsi que les événements générés par les actions de l'utilisateur. La gestion des événements est expliquée à travers des concepts tels que les événements de bas niveau et de haut niveau, ainsi que les intercepteurs d'événements comme les écouteurs.

Transféré par

scribd.coasting900
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues50 pages

API Swing

Ce document présente les gestionnaires de placement et la gestion des événements dans l'API Swing de Java. Il décrit les différents types de gestionnaires de placement, tels que FlowLayout, BorderLayout et GridLayout, ainsi que les événements générés par les actions de l'utilisateur. La gestion des événements est expliquée à travers des concepts tels que les événements de bas niveau et de haut niveau, ainsi que les intercepteurs d'événements comme les écouteurs.

Transféré par

scribd.coasting900
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Application à la programmation orientée objet

Semaine 4

API Swing (2/2)

Yaovi HOETOWOU
2

● Utiliser les gestionnaires de


placement
Objectifs ● Gérer les événements

Y. HOETOWOU
INF350 - S4 : Java Swing Y. HOETOWOU
3

3. Gestionnaires de placement

Contenu 4. Gestion des événements

INF350 - S4 : Java Swing Y. HOETOWOU


4

3. Gestionnaires de placement

INF350 - S4 : Java Swing Y. HOETOWOU


Généralités 1/2 5

➔ Les gestionnaires de placement sont des composants qui servent à


positionner d’autres composants.
➔ Ils sont définis dans la librairie AWT.
➔ Ils redimensionnent les composants et les espaces entre eux selon
la taille de la fenêtre et de la stratégie utilisé par le layout.
➔ Chaque composant a deux tailles :
◆ size : la taille effective,
◆ preferredSize : la taille idéale,

INF350 - S4 : Java Swing Y. HOETOWOU


Généralités 2/2 6

➔ Le layout rend la taille réelle la plus proche possible de la taille


préférée.
➔ On distingue :
◆ Les gestionnaires de placement classiques,
◆ Les gestionnaires de placement spécialisés,
◆ Les gestionnaires de placement personnalisés.
➔ Utiliser généralement la méthode setLayout() pour spécifier le
gestionnaire.

INF350 - S4 : Java Swing Y. HOETOWOU


3.1- Gestionnaires de placement classiques 7

➔ On distingue :
◆ Le FlowLayout,
◆ Le BorderLayout,
◆ Le GridLayout.

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
1/2
3.1.1 - Le FlowLayout 8

➔ C’est le gestionnaire par défaut pour les JPanel,


➔ dispose les composants les uns à la suite des autres de la gauche vers
la droite,
➔ passe à la ligne suivante s’il n’y a plus de place sur la ligne courante,

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
2/2
3.1.1 - Le FlowLayout 9

➔ renvoie une erreur s’il n’y a plus de ligne,


➔ respecte la taille des composants.

Exemples
➔ [Link] (new FlowLayout([Link], 10, 15) :
◆ centrer les composants sur les différentes lignes,
◆ espace horizontal = 10, espace vertical = 15.
➔ L’appel de la méthode pack() sur une fenêtre permet de l’ajuster à son
contenu.

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
1/2
3.1.2 - Le BorderLayout 10

➔ Ce gestionnaire divise son espace de travail en cinq zones

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
2/2
3.1.2 - Le BorderLayout 11

➔ Chaque zone peut contenir 0 ou 1 composant.


➔ Pour y mettre plus d’un composant, utiliser un conteneur intermédiaire.
➔ Lors de l’ajout d’un composant,
◆ préciser la zone,
◆ zone “Centre” sélectionnée par défaut.

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
1/3
3.1.3 - Le GridLayout 12

➔ Ce gestionnaire place les composants dans une grille.


➔ Chaque composant occupe le même espace.
➔ On peut créer un GridLayout en précisant les nombre de lignes et de
colonnes dans le constructeur. Exemple : new GridLayout(3,3)

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
2/3
3.1.3 - Le GridLayout 13

➔ Possibilité de rajouter deux argument supplémentaire lors de l’appel


du constructeur :
◆ le premier définit l’espacement horizontal,
◆ le second définit l’espacement vertical,
◆ par défaut l'espacement est de 5 points.
➔ Les méthodes setHgap et setVgap permettent de modifier les
respectivement les l’espacement horizontal et l’espacement vertical.

INF350 - S4 : Java Swing Y. HOETOWOU


3.1 - Gestionnaires de placement classiques
3/3
3.1.3 - Le GridLayout 14

➔ L’un des paramètres nombre de lignes et nombre de colonnes peut


être égal à 0 : il n'est pas pris en compte et le nombre de lignes ou de
colonnes s'adapte au nombre de composants.
➔ Si le nombre de composants à insérer est plus grand que le nombre
de cases dans le GridLayout, des cases supplémentaires sont créées
en augmentant le nombre de colonnes et en respectant le nombre de
lignes d’origine.

INF350 - S4 : Java Swing Y. HOETOWOU


3.2- Gestionnaires de placement spécialisés 15

➔ On distingue :
◆ Le GridbagLayout,
◆ Le CardLayout,
◆ Le BoxLayout.

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
1/4
3.2.1 - Le GridbagLayout 16

➔ Dispose les composants comme le GridLayout sauf qu’un composant


peut prendre plusieurs lignes et plusieurs colonnes,
➔ Pour ajouter un élément à un conteneur utilisant ce gestionnaire,
◆ spécifier le composant à ajouter,
◆ préciser la contrainte qui est une instance de la classe
GridBagConstraints,
◆ un objet GridBagConstraints n’est rien d'autre que des attributs
de la cellule.

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
2/4
3.2.1 - Le GridbagLayout 17

Quelques attributs de la classe GridLayoutConstraints


➔ GRIDX, GRIDY : définissent la position du composant dans la grille,
➔ GRIDWIDTH, GRIDHEIGHT : définissent les dimensions de la grille,
➔ IPADX, IPADY : définissent les marges internes au composant,
➔ INSETS : sert à préciser les marges autour composant,
➔ ANCHOR : spécifier un point d'ancrage à un composant à l'intérieur de sa
(ses) cellule(s).

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
3/4
3.2.1 - Le GridbagLayout 18

➔ FILL : utilisé lorsque l'espace alloué au composant est supérieur à celui


de ses désidératas et on veut le redimensionner. Quatre valeurs sont
possibles en fonction du redimensionnement
◆ NONE : valeur par défaut
◆ HORIZONTAL : Le composant parent est rempli horizontalement
◆ VERTICAL : le composant parent est rempli verticalement
◆ BOTH : toute la zone contenant le composant est remplie

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
4/4
3.2.1 - Le GridbagLayout 19

Exemple

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
1/3
3.2.2 - Le CardLayout 20

➔ permet de placer des composants d’une IHM sous la forme d’une pile,
➔ le composant visible est toujours le premier ajouté dans la fenêtre,
➔ pour pouvoir accéder aux autres composants, instancier la classe
CardLayout comme suit :

➔ pour ajouter un composant utiliser la méthode


public void add (Component composant, String nom) où nom est une
chaîne unique servant à identifier le composant.

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
2/3
3.2.2 - Le CardLayout 21

Les méthodes permettant d’accéder à ces composants sont :


➔ public void show(Container parent, String name): affiche le composant
ou le sous-conteneur associé à la chaîne de caractères name,
➔ public void next(Container parent) : Affiche la carte suivante,
➔ public void previous(Container parent) : Affiche la carte précédente,
➔ public void first(Container parent) : Aller à la première carte,
➔ public void last(Container parent) : Aller à la dernière carte.

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
3/3
3.2.2 - Le CardLayout 22

Exemple

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
1/2
3.2.3 - Le BoxLayout 23

➔ utilisé pour placer les composants soit sur une ligne ou une colonne,
➔ ne met pas de contraintes sur la taille des composants,
➔ pas forcément la même taille pour tous les composants,

INF350 - S4 : Java Swing Y. HOETOWOU


3.2 - Gestionnaires de placement spécialisés
2/2
3.2.3 - Le BoxLayout 24

➔ Exemple : attribuer un BoxLayout à un JPanel avec un alignement


horizontal

INF350 - S4 : Java Swing Y. HOETOWOU


3.3- Gestionnaires de placement personnalisés 25

➔ On peut:
◆ créer son propre gestionnaire de placement,
◆ utiliser le Positionnement absolu.

INF350 - S4 : Java Swing Y. HOETOWOU


3.3 - Gestionnaires de placement personnalisés
3.3.1 - créer son propre gestionnaire de 26

placement
➔ Désactiver le gestionnaire par défaut ,
➔ Créer une classe qui implémente l'interface LayoutManager ou sa
sous interface LayoutManager2 en développant les méthodes
suivants :
◆ void addLayoutComponent(String, Component)
◆ void removeLayoutComponent(Component)
◆ Dimension preferredLayoutSize(Container)
◆ Dimension minimumLayoutSize(Container)
◆ void layoutContainer(Container)

INF350 - S4 : Java Swing Y. HOETOWOU


3.3 - Gestionnaires de placement personnalisés
3.3.2 - Positionnement absolu 27

➔ permet de contrôler la position de chaque composant par rapport aux


bords de la fenêtre.
➔ Pour gérer soi-même le positionnement (absolu) des composants :
◆ mettre le gestionnaire de placement du conteneur à null,
◆ utiliser la méthode setBounds(),
◆ appeler la méthode repaint() pour tout mettre en oeuvre.

INF350 - S4 : Java Swing Y. HOETOWOU


28

4. Gestion des événements

INF350 - S4 : Java Swing Y. HOETOWOU


Généralités 1/3 29

INF350 - S4 : Java Swing Y. HOETOWOU


Généralités 2/3 30

➔ C’est de la "programmation à base d’événements"


➔ Les actions d’un utilisateur sur l’interface génèrent des événements
récupérés et traités les uns à la suite des autres.
➔ Java utilise une architecture de type "émetteur - récepteur" pour
gérer ces événements.

INF350 - S4 : Java Swing Y. HOETOWOU


Généralités 3/3 31

➔ La gestion des événements comprend trois volets :


◆ les événements,
◆ les intercepteurs d’événements,
◆ la gestion des événements.

INF350 - S4 : Java Swing Y. HOETOWOU


4.1- Les événements 32

➔ Un événement est une information émise par un composant appelé


émetteur et qui pourrait déclencher des réactions sur d’autres
éléments appelés récepteurs
➔ On distingue :
◆ les événements de bas niveau,
◆ les événements de haut niveau

INF350 - S4 : Java Swing Y. HOETOWOU


4.1 - Les événements
1/2
4.1.1 - Les événements de bas niveau 33

➔ événements générés directement par des actions élémentaires de


l’utilisateur :
◆ appui sur un bouton de la souris
◆ relâchement du bouton de la souris
◆ un clic de souris

INF350 - S4 : Java Swing Y. HOETOWOU


4.1 - Les événements
2/2
4.1.1 - Les événements de bas niveau 34

Des classes prédéfinies permettent de capturer les événements :


➔ KeyEvent : pour les événements du clavier,
➔ WindowEvent: fenêtre activée, désactivée, réduite, fermée, ...
➔ ContainerEvent: ajout, suppression, etc. d’un composant dans un conteur
➔ ComponentEvent: déplacement, affichage, masquage ou modification de
taille d’un composant,
➔ FocusEvent: obtention ou perte du focus du clavier sur un composant
➔ MouseEvent: appui, relâchements, clics de souris, et les entrée/sortie de la
souri dans un composant

INF350 - S4 : Java Swing Y. HOETOWOU


4.1 - Les événements
4.1.2 - Les événements de haut niveau 35

➔ Aussi appelés événements sémantiques,


➔ Correspondent à une action complète de l’utilisateur,
➔ Il existe des classes pour définir les événements sémantiques :
◆ ActionEvent : sélection ou clic d'un élément,
◆ ItemEvent : sélection dans une liste ou dans un groupe de cases à
cocher,
◆ TextEvent : modification du texte d'un composant texte.

INF350 - S4 : Java Swing Y. HOETOWOU


4.2- Les intercepteurs d’événements 36

➔ On distingue :
◆ Les écouteurs,
◆ Les adaptateurs.

INF350 - S4 : Java Swing Y. HOETOWOU


4.2 - Les intercepteurs d’événements
1/2
4.2.1 - Les écouteurs 37

➔ Les sources d’événements et les écouteurs sont des objets.


➔ L’objet écouteur peut se déclarer comme étant intéressé par un certain
événement survenant sur un objet source.
➔ Un écouteur est un objet qui intercepte des événements qui se produisent
sur un ou plusieurs autres objets.
➔ Il définit ainsi la ou les méthodes contenant les traitements associés à ces
événements.
➔ Ces méthodes prennent un événement en argument et se déclenchent
chaque fois que cet événement survient sur l’objet source.

INF350 - S4 : Java Swing Y. HOETOWOU


4.2 - Les intercepteurs d’événements
2/2
4.2.1 - Les écouteurs 38

➔ Les écouteurs les plus utilisés :


◆ WindowListener
◆ ContainerListener
◆ ComponentListener
◆ ActionListener
◆ KeyListener
◆ MouseListener
◆ ItemListener
◆ TextListener

INF350 - S4 : Java Swing Y. HOETOWOU


4.2 - Les intercepteurs d’événements
1/2
4.2.2 - Les adaptateurs 39

➔ Un écouteur impose l’implémentation de toutes les méthodes de


l’interface correspondante.
➔ Pour ne pas avoir a toutes les implémenter même si on en a pas
besoin, on utilise les adaptateurs
➔ Ceux sont des classes qui implémentent les interfaces écouteurs
dont les méthodes ne sont pas toutes à développer
➔ Seules les interfaces écouteurs ayant plusieurs méthodes sont
accompagnées de classes adaptatrices.

INF350 - S4 : Java Swing Y. HOETOWOU


4.2 - Les intercepteurs d’événements
2/2
4.2.1 - Les adaptateurs 40

➔ Quelques adaptateurs :
◆ WindowAdapter,
◆ ContainerAdapter,
◆ ComponentAdapter,
◆ KeyAdapter,
◆ FocusAdapter,
◆ MouseAdapter,
◆ MouseMotionAdapter, ...

INF350 - S4 : Java Swing Y. HOETOWOU


4.3- Gestion des événements 1/2 41

➔ Le composant prévient ses écouteurs de l’arrivée de l'événement qu’il


désirent recevoir
➔ L’écouteur implémente toutes les méthodes de l’interface
correspondante.
➔ Pour un type d’événement, il implémenter la bonne interface et
développer la bonne méthode.
➔ Enfin, recenser l'écouteur dans la source en utilisant une méthode
addXxxListener (XxxListener ecouteur)

INF350 - S4 : Java Swing Y. HOETOWOU


4.3- Gestion des événements 2/2 42

➔ La relation entre la source d’événement et l’écouteur peut être définie


différentes façons :
◆ La source implémente elle même l'écouteur,
◆ La source est indépendante de l’écouteur,
◆ L’écouteur est dans la source,
◆ L’écouteur est dans la source en tant qu’une classe anonyme.

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
1/2
4.3.1 - La source implémente elle même 43

l'écouteur

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
2/2
4.3.1 - La source implémente elle même 44

l'écouteur

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
1/2
4.3.2 - La source est indépendante de l’ 45

écouteur

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
2/2
4.3.2 - La source est indépendante de l’ 46

écouteur

3
INF350 - S4 : Java Swing Y. HOETOWOU
4.3 - Gestion des événements
1/2
4.3.3 - L’écouteur est dans la source 47

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
2/2
4.3.3 - L’écouteur est dans la source 48

INF350 - S4 : Java Swing Y. HOETOWOU


4.3 - Gestion des événements
4.3.3 - L’écouteur est dans la source en tant 49

qu’une classe anonyme

INF350 - S4 : Java Swing Y. HOETOWOU


50

● Choisir les bons gestionnaires de


placement pour les composants des

Travail à faire ●
différentes pages,

Utiliser les gestionnaires d’


sur les projets événement pour capturer les
d’apprentissage actions de l’utilisateur sur le
système,

● Relier les méthodes aux


événements qui leur correspondent

INF350 - S4 : Java Swing Y. HOETOWOU

Vous aimerez peut-être aussi