Вы находитесь на странице: 1из 52

Cours 2

Contenu du cours :
"
"
"
"
"
"
"
"
"
"

OO avanc
Introduction aux GUI
un peu dhistoire : AWT et swing
swing
Les vnements
Les composants textuels
Les boutons
Les gestionnaires de disposition
Les panneaux
Les fentres

Donnes et mthodes statiques

Donnes et mthodes statiques

Les mthodes et donnes statiques appartiennent aux classes


et sont utilisables sans crer d'objets de cette classe.
Il nexiste quune copie dune variable statique, partage par tous les objets
dune classe.

Vie et mort des objets (1)

A l'intrieur d'une mthode statique, on ne peut


utiliser que les variables/mthodes statiques.
Mais l'inverse n'est pas vrai.

Vie et mort des objets (2)

Un objet est marqu dtruire lorsquil nexiste plus de rfrence sur lui.
La mthode finalize est excute lors de la destruction dun objet.
La mthode System.gc suggre lutilisation du ramasse-miette.

Vie et mort des objets (3)

Surcharge de mthodes (1)

Pour surcharger une mthode, il suffit dcrire plusieurs versions de la mthode.


Chaque version a le mme nom, mais une liste de paramtres diffrents.
(en anglais, on parle doverloading)

Surcharge de mthodes (2)

Premier appel
Dans la version de la mthode pour les entiers !
Second appel
Dans la version de la mthode pour les chane !

POO
La programmation oriente objet permet:
d'augmenter la rutilisabilit du logiciel
hritage
la dfinition de fonctionnalits gnriques
polymorphisme
l'abstraction
penser en terme de classes, d'objets

L'hritage
Java

UML
MaSuperClass
e

On dit que :
:la classe MaClasse hrite de la classe MaSuperClasse
:la classe MaClasse drive de la classe MaSuperClasse
:la classe MaClasse est une sous-classe de MaSuperClasse :(
:la classe MaClasse est une classe fille de MaSuperClasse
:la classe MaSuperClasse est la super classe de MaClasse
:(
:la classe MaSuperClasse est la classe mre de MaClasse
:la classe MaSuperClasse est la classe parent de MaClasse

MaClasse

La drivation est une spcialisation.


Il n'y a pas d'hritage multiple, une classe ne peut avoir
qu'une seule et unique classe super classe.
On parle de super classe directe et indirecte.

L'hritage
Animaux
Vertbrs

Animaux

Chiens

Vertbrs

Chiens
Une classe reprsente un ensemble .
Une classe fille reprsente un sous ensemble
de l'ensemble reprsent par sa classe mre.

L'hritage

L'hritage

La classe fille hrite des fonctionalits de sa classe mre.


Elle hrite de ses donnes membres et de ses mthodes.

L'hritage
Une classe fille n'a pas accs toutes les
variables ou toutes les mthodes de sa
classe mre.
Elle a accs aux proprits dclares:
:public
:protected
:package (si elles sont dans le mme
package)
Elle n'a pas accs aux proprits dclares :
/private

L'hritage dfinit un nouveau mode de masquage de donnes,


et il respecte la philosophie du masquage des donnes prives.
Les membres hrits conservent le mme niveau de visibilit.

Accessibilit des donnes


Modificateur
d'accs

Accessible
la classe

Accessible
une classe du
mme package

Accessible
une classe
fille

Accessible
tous

public

Oui

Oui

Oui

Oui

protected

Oui

Oui

Oui

Non

package

Oui

Oui

Non

Non

private

Oui

Non

Non

Non

Hirarchie
Objets
Animaux
Vertbrs
Chiens

La hirarchie est l'ensemble des liens d'hritage.


java.lang.Object est la classe mre par dfaut.
En java, toutes les classes drivent de la classe java.lang.Object.

GUI (1)
GUI (1)

Comment faire scroller le contenu dun JOptionPane ?

GUI (2)

GUI (3)

Les vnements en java ....

GUI (4)

vnement
composant

Composants de base et vnements

GUI (5)

Les vnements en java ....

GUI (6)

vnement
composant

Composants de base et vnements

GUI

GUI signifie Interface Utilisateur Graphique.


Une GUI est base sur des composants rutilisables.

Swing

La hirarchie de swing est base sur l'AWT afin de profiter


des mcanismes dfinis dans l'AWT par hritage.Les
packages de swing se trouvent dans javax.swing....

Composants de Swing

L'API swing propose un grand nombre de composants rutilisables.


Chaque famille de composants est dcrite dans une classe de Swing.

Composants de Swing
La classe javax.swing.JLabel
Mthodes
public void setVisible(boolean b)
"public void setEnabled( boolean b )
"public void setSize(int w,int h)
"

public void setToolTipText(String s)


"public void setBorder(Border b)
"

public void setText(String s)


"public void setHorizontalTextPosition(int
i)
"

Tous les composants sont personnalisables.


Les classes de swing proposent des mcanismes
gnraux de manipulation des composants (par l'hritage).

Composants de Swing

Un composant est un objet java comme les autres.


Il doit tre instanci avec un constructeur,possde des
mthodes ....

Composants de Swing
La classe javax.swing.JFrame

Mthodes
public Container
getContentPane()
"public void setSize(int w,int h);
"public void show();
"

Une JFrame est un objet complexe.


Il dlgue son rle de Container son ContentPane.

SwingConstants
L'interface
javax.swing.SwingConstants

L'interface SwingConstants dfinit des constantes qui sont


utilises pour les dispositions dans Swing.

Les vnements

Les vnements sont un mcanisme qui permet au


programmes java de ragir aux actions de l'utilisateur sur
le GUI.

Les vnements : coute

L'coute d'un vnement se fait toujours selon le mme


schma.

Les vnements : coute


Les 3 phases de l'coute d'un vnement :
Cration d'une classe d'coute (un listener)

"

Implantation de la mthode qui nous intresse dans la


classe d'couteur.
"

Enregistrement d'une instance de la classe couteur


auprs de la source de l'vnement.
"

L'coute d'un vnement se fait toujours selon le mme


schma.

Les vnements : source


Le composant JButton
possde une donne
membre listenerList de
type EventListenerList
hrite de Component.

handle
r L'couteur handler de type

Handler contient la mthode


public void actionPerformed(ActionEvent
evt)

car la classe Handler


implmente ActionListener.

listenerList

...

Le Handler est l'couteur d'vnement,


le JButton est la source de l'vnement.

Les vnements : source


Grce la mthode
public void addActionListener( ActionListener l)
la source s'assure que l'couteur l possde la mthode
public void actionPerformed(ActionEvent evt)
avant de le mettre dans sa listenerList.
"

Pour dclencher son vnement, la source n'a plus qu' parcourir


tous les listeners de sa listenerList et appeler leur mthode
public void actionPerformed(ActionEvent evt)
o evt est un objet dcrivant les spcificits de l'vnement.(source,
genre,etc..)
"

Chaque source d'vnement possde des mthodes


add<event>Listener et remove<event>Listener
o <event> reprsente le type d'vvenement qu'elle est capable
de gnrer.
"

Les vnements sont troitement lis au modle d'hritage


de java.

Les vnements : hirarchie

Les vnements sont eux aussi soumis une hirarchie.

Les vnements : hirarchie

Les interfaces d'coute des vnements sont, elles aussi,


hirarchises.

Les couteurs : utilisation.


MouseListener :
coute les cliks de souris, les pressions et les
relchements de boutons.
"

MouseMotionListener :
coute les dplacements de la souris et les drag.

AdjustementListener :
coute les vnements lis des
ajustements (ex : scrollbar)
"

"

KeyListener :
coute les vnements de frappe de touches.

"

ItemListener :
coute les vnements de slection
d'item dans une liste de choix.
"

ActionListener :
coute les vnements d'action.
Les vnements d'action sont les
vnements attendus par dfaut
(ex click pour les butons, enter pour
les textfields....)
"

FocusListener :
" coute les vnements de focus (perte/gain)
"

WindowListener :
coute les vnements des fentres
(agrandissement, iconification...)
"

Component/ContainerListener :
coute les vnementsd'ajout, de
redimensionnement de composants
"

Les interfaces sont spcifiques un type d'vnement donn.


Mais rien interdit d'implmenter plusieurs interfaces dans vos Handler.

Les couteurs : exemple.

Les couteurs : utilisation.

Les couteurs : utilisation.

Un handler implmentant une interface doit donner une


implmentation de TOUTES les mthodes de l'interface.
Handler implmente, ici, 2 interfaces.

Les composants textuels


javax.swing.text.JTextCompon
ent
javax.swing.JTextField

javax.swing.JTextAera

javax.swing.JPasswordFi
eld

La classe abstraite javax.swing.text.JTextComponent propose des


mthodes gnrales pour la gestion du undo, cut/copy/paste, polices...

Les composants textuels

Les composants textuels

Les JtextComponents envoie des actionEvent lorsque l'on appuie sur Entre.
On utilise getText ou getPassword pour rcuprer le contenu des champs.

Les boutons
javax.swing.JComponent

javax.swing.AbstractButto
n
javax.swing.JButton

javax.swing.JToggleButton

javax.swing.JCheckB javax.swing.JRadioButto
n
ox

Il existe une hirarchie dans les boutons, de manire regrouper tout le


code commun dans la classe AbstractButton et augmenter l'abstraction.

Les boutons

Les boutons

Les gestionnaires de disposition

Les LayoutManagers sont des objets permettant de grer la disposition


des composants dposs dans un container, ils grent aussi le
redimmensionnement.

Les gestionnaires de disposition

Les gestionnaires de disposition

Le borderLayout utilise des constantes pour placer les composants.


Par dfaut, le composant est ajout au centre.

Les panneaux

Les Jpanels sont utiliss comme des conteneurs swing ,


ils permettent de dcouper le conteneur qui les contient en zones...

Les panneaux

Les fentres

Les fentres gnrent des vnements pour leur fermeture,


ouverture, iconisation, etc,...