Pro
g
rammationévénementielle
g
etseauaveclelan
g
a
g
eJava
gg
ModuleI6
IUTd'AixenProvence
seauxetTélécommunications
Février 2011
Février
2011
IvanMadjarov
Interface graphique
Interface
graphique
GestiondesÉvénements
Systèmed'EntréeSortie,FluxetFichiers
Programmation seau UDP TCP
Client
Serveur
Programmation
réseau
,
UDP
,
TCP
,
Client
Serveur
JAVA
(I6)
(I6)
IvMad, Février 2011 2
Le langage Java
Le
langage
Java
JAVA
INTERFACE GRAPHIQUE
INTERFACE
GRAPHIQUE
IvMad, Février 2011 3
Lespackages(rappel)
Unpackageregroupeunensembledeclasses
sous un même espace de nommage.
sous
un
même
espace
de
nommage.
L'intérêtestderegrouperlesclassespar:
thème lien logique dépendance
thème
,
lien
logique
,
dépendance
Lepackagepeutêtrereprésentécommeunrépertoire
dfi hi l
contenant
d
es
fi
c
hi
ersc
l
asses
Permetdelimiterlaportéedunomdesclasses
Unpackagepeutcontenirdessouspackages
L d k itl
L
esnoms
d
espac
k
agessu
i
ven
t
l
esc
ma:
name.subname.subsubname ...
LesAPIdejavasontorganiséesenpackages
(
ex:
j
ava.lan
g
,
j
ava.io
,
j
ava.net
,
j
avax.swin
g
)
IvMad, Février 2011 4
(
jg
,
j
,
j,
jg
)
Lespackages(rappel)
lesnomscompletsdesclassessont:
nom du package
nom de la classe
nom_du_package
.
nom_de_la_classe
ouencore
package.souspackage.classe
package.souspackage.classe
pourutiliserdesclassessanslespréfixerdunomdeleur
package il faut :
package
il
faut
:
import package.souspackage.classe;
import package *; (TOUTES les classes)
import
package
.
*;
(TOUTES
les
classes)
Exemple:
//
import java.io.File;
//
UNE seule classe
import java.io.*; // toutes les classes
le'*' n’estpasrécursif!
Im
p
licitedansun
p
ro
g
.
j
ava:im
p
ort
j
ava.lan
g
.
*;
IvMad, Février 2011 5
ppgj
p
jg
LescoreAPI (rappel)
LesAPIlespluscourants:
j
ava.lan
g
:T
yp
esdebases
,
Threads
,
Exce
p
tion
,
Math
,
...
jg
yp , , p, ,
java.util :Hashtable,Vector,Stack,Date,...
java.applet :InterfaceverslesapplicationsWeb
java.awt :Interfacegraphiqueportable
java.io :accèsauxi/oparflux(fichiers,stdin,stdout,..)
java.net :Socket(UDP,TCP,multicast),URL,...
java.lang.reflect :introspectionsurlesclassesetlesobjets
java.beans :composantslogiciels
java.sql (JDBC):accèshomogèneauxbasesdedonnées
java.security :signature,cryptographie,authentification
java.rmi :Remote Method Invocation
L API i llé ibi i
L
es
API
sont
i
nsta
llé
esenvers
i
on
bi
na
i
re
utilisablesvialajavadoc associée(auformatHTML)
Atélé h ê t l JDK!
IvMad, Février 2011 6
A
télé
c
h
argerenm
ê
me
t
empsque
l
e
JDK!
Interfacegraphique
Deuxpackagespermettentdegérerlesinterfaces
graphiques :
AWT
et
SWING
graphiques
:
AWT
et
SWING
.
AWT utilisedescomposants"lourds",c'estàdire
desressourcesdusystèmed'exploitation.
Swing
utilise des composants
"
légers
"
qui ne se
Swing
utilise
des
composants
légers
qui
ne
se
réfèrentpasauxressourcessystème.
LeSwing estplusrobustequel'AWT,
Le
Swing
est plus portable et plus facile àutiliser
Le
Swing
est
plus
portable
,
et
plus
facile
à
utiliser
.
Le Swing neremplacepascomplètementAWT
LeSwing fournitdescomposantsd'interfaceplus
performants.
performants.
7IvMad, Février 2011
Interfacegraphique
Ilyadeuxprincipauxtypesdecomposantsutilisés
dit f hi
d
ansune
i
n
t
er
f
acegrap
hi
que:
les
conteneurs
qui sont destinés àcontenir d
autres
les
conteneurs
qui
sont
destinés
à
contenir
dautres
composants(ex:fenêtres,cadres);
lescomposantsatomiquesquisontdes
composantsquinepeuventpasencontenir
d’autres(ex:boutons).
L l hi J à it t
L
esc
l
assesgrap
hi
quesen
J
ava
à
i
mpor
t
erson
t
:
java.awt .
*
;
// le package de l
'
AWT
java.awt
.;
//
le
package
de
lAWT
javax.swing.*; //lepackageduSwing
8IvMad, Février 2011
Conteneursetcomposants
Lescomposants d'uneinterfacegraphiquesontplacés
dans des
conteneurs
dans
des
conteneurs
.
Unconteneur:sousclassedelaclassejava.awt.Container
Uncomposant estunepartie"visible"del'interface
utilisateurJava
(
lesboutons
,
leszonesdetextes
)
.
( , )
unesousclassesdelaclasseabstraitejava.awt.Component
Ch bj t
Ct
tili ti i d
Ch
aqueo
bj
e
t
C
on
t
eneuru
tili
seunges
ti
onna
i
re
d
e
placement(layout)pourcontrôlerlatailledel'écran
etladispositiondesobjetsqu'ilcontient.
Un
gestionnaire de placement
fait la mise en écran
Un
gestionnaire
de
placement
fait
la
mise
en
écran
descomposantsutilisateurs.
9IvMad, Février 2011
Conteneursetcomposants
Leschémadedépendance
Object
(from la ng)
Button Hiérarchied’héritage
des principaux éléments des
Component
Canvas
Checkbox
des
principaux
éléments
des
interfacesgraphiquesenJava
Container
Choice
Panel Window
Label
Scrollbar List
Applet
(from applet)
Dialog Frame
TextComponent
FileDialog
TextArea TextField
10IvMad, Février 2011
InterfacegraphiqueAWT
11IvMad, Février 2011
Conteneursetcomposants
UnFrame représenteunefenêtredehautniveauavec
un titre une bordure et des angles de
un
titre
,
une
bordure
et
des
angles
de
redimensionnement.
i
mport java.awt.*;
public class EssaiFenetre1
{
Création d’une fenêtre
(un objet de la classe
Frame) avec un titre
{
public static void main(String[] args)
{Frame f =new Frame("Ma première fenêtre");
b
()
Frame)
avec
un
titre
Création du bouton ayant
pour label
"
coucou
"
B
utton
b
= new Button
(
"coucou"
)
;
f.add(b);
f.pack();
f
.show
();
pour
label
coucou
Ajout du bouton dans la
fenêtre
();
}
}
fenêtre
On demande à la fenêtre
de
c
h
o
i
s
ir l
a
ta
ill
e
de c o s a ta e
minimum avec pack() et
de se rendre visible avec
show
()
12IvMad, Février 2011
()
InterfacegraphiqueAWT
13IvMad, Février 2011
ApplicationgraphiqueAWT
importjava.awt.*;//importerlepackagegraphiquedebase
class
GUIApp
{
// nom de la classe graphique
class
GUIApp
{

//
nom
de
la
classe
graphique
publicstatic void main(Stringargv[]){//laméthodemain
// iiidl' bj d
//
i
nstanc
i
at
i
on
d
e
l'
o
bj
etca
d
reentantqueconteneur
Framefn =newFrame("GUIAppJava");
//instanciationd'unobjetdetypeétiquetteavecalignement
Labelbnj =newLabel("Bonjourtoutlemonde!",Label.CENTER);
//ajouterlecadreauconteneuravecalignementvertical
fn.add("Center",bn
j
);
//délimiterlechampvisuel
f
n.resize
(
300
,
150
);
f
(,);
//fairevisibleàl'écran
fn.show
();
} }
IvMad, Février 2011 14
fn.show
();

}

}
import java.awt.*;
public class Fenetre1 extends Frame {
Label la; // étiquette
public static void main (String args[]) {
Fenetre1 f = new Fenetre1("Ma fenêtre");
f.setBounds(200, 100, 300, 300);
TextField tf; // champ de saisie
TextArea ta ; // aire de saisie
Button b ; // bouton
Checkbox cb; // Case à cocher
f.setVisible(true);
f.ta.requestFocus();
}
}
Choice ch; // liste déroulante
List li; // Liste simple
Scrollbar sc; // défilement
public Fenetre1(String titre) { // Constructeur
super(titre); // appel à la super-classe Frame
this.setBackground(Color.lightGray); // couleur de fond
la = new Label("Voici une étiquette");
b = new Button("Un bouton");
tf = new TextField("Une ligne de saisie", 30);
tf.setBackground(Color.CYAN);
ta = new TextArea ("Une zone de saisie multiligne", 3 ,30);
ta.setBackground(Color.ORANGE);
ch = new Choice(); // liste déroulante
ch.add ("Lundi"); // ajout de composants
ch.add ("Mardi"); ch.add ("Mercredi");
ch.add ("Jeudi"); ch.add ("Vendredi");
li = new List(); // Liste simple
li.add ("Janvier"); // ajout de composants
li.add ("Février"); li.add ("Mars");
li.add ("Avril"); li.add ("Mai");
cb = new Checkbox("R&T 2010", true); // case à cocher
sc = new Scrollbar(Scrollbar.HORIZONTAL, 100 , 30 , 0, 1000);
FlowLayout fl = new FlowLayout (FlowLayout.CENTER, 5, 5);
this.setLayout(fl);
IvMad, Février 2011 15
add(la); add(b); add(ta); add(tf);
add(ch); add(li); add(cb); add(sc);
}
InterfacegraphiqueSwing
Uneapplicationgraphique(voirunefenêtre)peut
être construite selon le principe suivant :
être
construite
selon
le
principe
suivant
:
16IvMad, Février 2011
InterfacegraphiqueSwing
L'ordred'affichagedescomposants:
17IvMad, Février 2011
FetregraphiqueSwing
JWindow:C'estlafenêtrelaplusbasique.C'estjuste
un conteneur sans barre de titre boutons de
un
conteneur

sans
barre
de
titre
,
boutons
de
fermetureetn'estpasredimensionnable.
JDialog :C'estunefenêtredestinéeauxboîtesde
dialogue Ce type de fenêtre est modal càd qu
'
elle
dialogue
.
Ce
type
de
fenêtre
est
modal
,
c
.
à
.
d
.
qu elle
bloqueuneautrefenêtretantqu'elleestouverte.
JFrame :Formelafetreprincipaled'une
a
pp
lication.Ne
p
endantd'aucuneautrefenêtreet
pp p
nepeutpasêtremodale.Elleaunebarredetitre,
bouton de fermeture et de redimensionnement et
bouton
de
fermeture
et
de
redimensionnement
et
peutaccueillirunebarredemenuetpeutêtre
iconifié
iconifié
.
18IvMad, Février 2011
Lahiérarchiedescomposants
Button :classedesboutonsàcliquer.
Canvas
:objet zone de dessin
Canvas
:
objet
zone
de
dessin
.
Checkbox :boîteàcocher.
CheckboxGroup :objetquiregroupeplusieursobjets
Checkbox réaliseunensembledeboutonsradio.
Choice :objetquipermetdegérerunelistedechoix.
Labe
l
:affichesimplementunelignedetextefixe(étiquette).
List :objetspécialisédansl'affichaged'unelisted'items.
Scrollbar
:objet pour choisir une valeur dans un intervalle
Scrollbar
:
objet
pour
choisir
une
valeur
dans
un
intervalle
.
TextComponent :
TtFild
illi d'éditi (h dii)
T
ex
tFi
e
ld
:unes
i
mp
l
e
li
gne
d'éditi
on
(
c
h
amp
d
esa
i
s
i
e
)
.
TextArea :zoned'éditiondetextedeplusieurslignes,muniede
barres de filement
barres
de
défilement
.
19IvMad, Février 2011
Lahiérarchiedescomposants
Container :classeabstraite(sansobjet)quisertdesupportà
d'autrescom
p
osants.Princi
p
alesméthodes:add
(),
remove
()
p p
(), ()
Panel:c'estunobjetconteneurquicontientluimême
d
'
autres conteneurs, placé souvent dans un objet
Frame
.
dautres
conteneurs,
placé
souvent
dans
un
objet
Frame
.
Applet:applicationinterprétéeparunnavigateurWeb.
Window
:fetre d
'
application sans bordure ni barre de
Window
:
fetre
d application
sans
bordure
,
ni
barre
de
menus;c'estun conteneur,géréparfautparun
BorderLayout
Rarement instanciée directement on utilise ses
BorderLayout
.
Rarement
instanciée
directement
,
on
utilise
ses
sousclassesDialog etFrame.
Méthodes :
setVisible() dispose() pack()
Méthodes
:
setVisible()
,
dispose()
,
pack()
.
Dialog :fenêtrededialogue,quidépendd'unefenêtreFrame,
aussi conteneur
aussi
conteneur
Frame :fenêtreencadréeaffichable,redimensionnable:c'estla
fetre typique d
'
une application graphique Java.
fetre
typique
d une
application
graphique
Java.
20IvMad, Février 2011
1 / 44 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !