http//www.labosun.com labosunsupinfo.
com
Les bases de Swing
INTERFACE HOMMEMACHINE
Auteur Maxime Vialette
Version n . octobre Nombre de pages
Ecole Suprieure dInformatique de Paris . rue Chteau Landon PARIS
www.supinfo.com
Les bases de Swing Interface HommeMachine
/
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Table des matires
..
INTRODUCTION........................................................................................................................
................. LES JAVA FOUNDATION
CLASSES....................................................................................................... .. .. .. .. .. . API
AWT
.................................................................................................................................................
API SWING
...............................................................................................................................................
API
JAVAD........................................................................................................................................
..... DRAG amp DROP
.......................................................................................................................................... API
ACCESSIBILITY amp INTERNATIONALIZATION
......................................................................................
FONCTIONNEMENT DUNE APPLICATION GRAPHIQUE
.............................................................. .. ARCHITECTURE GLOBALE
......................................................................................................................... .. CRITURE DE
LAPPLICATION ................................................................................................................... ...
Cration de la classe
........................................................................................................................ ... Dclaration des
composants graphiques.......................................................................................... ...
Initialisation de linterface
graphique.............................................................................................. ... Dfinir le conteneur
racine............................................................................................................. ... Lancement de
lapplication ............................................................................................................
.
LES COMPOSANTS SWING
................................................................................................................... .. LES
CONTENEURS DE HAUT NIVEAU
........................................................................................................ ... Le conteneur
JFrame...................................................................................................................... ... Le
conteneur JDialog .....................................................................................................................
... Le conteneur JWindow
................................................................................................................... ... Le conteneur
JApplet ...................................................................................................................... .. LES
CONTENEURS DUSAGE GENERAL
..................................................................................................... ... Le conteneur JPanel
....................................................................................................................... ... Le conteneur
JScrolPane................................................................................................................ ... Le
conteneur JSplitPane.................................................................................................................
... Le conteneur JTabbedPane
............................................................................................................ ... Le conteneur
JToolBar ................................................................................................................... .. LES
CONTENEURS SPECIFIQUES
............................................................................................................... ...
JRootPane..................................................................................................................................
..... ... ContentPane
................................................................................................................................... ...
JMenuBar
....................................................................................................................................... ...
GlassPane..................................................................................................................................
..... ... JLayeredPane
.................................................................................................................................
.... .... JDesktopPane
...........................................................................................................................................
JInternalFrame
..........................................................................................................................................
.
LES COMPOSANTS COURANTS
........................................................................................................... .. LA CLASSE
JCOMPONENT ....................................................................................................................... ..
LES COMPOSANTS BOUTONS
................................................................................................................... ... AbstractButton
................................................................................................................................ ...
JButton........................................................................................................................................
.... ... JRadioButton
.................................................................................................................................. .. LES
COMPOSANTS TEXTE
........................................................................................................................ ... Le JLabel
........................................................................................................................................ ... La
classe JTextComponent
............................................................................................................. ... JTextField
....................................................................................................................................... ...
JFormattedTextField
...................................................................................................................... ...
JPasswordField
.............................................................................................................................. ...
JTextArea...................................................................................................................................
..... ...
JEditorPane................................................................................................................................
.... ... JTextPane
....................................................................................................................................... ...
Options de style et de formatage ............................................................ Erreur Signet non
dfini.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
.. COMPOSANTS PROPOSANT UNE LISTE DE VALEURS
................................................................................. ... JCheckBox
...................................................................................................................................... ...
JComboBox................................................................................................................................
..... ... JList
................................................................................................................................................ ...
JSpinner......................................................................................................................................
.... ...
JSlider.........................................................................................................................................
.... .. LES COMPOSANTS DE MENU
.................................................................................................................... ... JMenuBar
....................................................................................................................................... ...
JPopupMenu...............................................................................................................................
.... ... JMenu
............................................................................................................................................. ...
JMenuItem
...................................................................................................................................... ...
JCheckBoxMenuItem
...................................................................................................................... ...
JRadioButtonMenuItem
.................................................................................................................. .. LES
COMPOSANTS INFORMATIFS NON EDITABLES
................................................................................... ... JProgressBar
.................................................................................................................................. ...
JToolTip......................................................................................................................................
.... .. LES CONTROLES DE
HAUTNIVEAU.......................................................................................................... ...
JColorChooser
............................................................................................................................... ...
JFileChooser
.................................................................................................................................. ... JTable
............................................................................................................................................. ...
JTree
............................................................................................................................................... .
LA GESTION DES
EVENEMENTS......................................................................................................... ..
PRINCIPE
................................................................................................................................................. ..
LES CLASSES DEVENEMENTS
................................................................................................................. ... Principe
.......................................................................................................................................... ..
UTILISATION
........................................................................................................................................... ..
VENEMENTS SPECIFIQUES
..................................................................................................................... ... Evnements de
java.awt.event ........................................................................................................ ...
Evnements de javax.swing.event
................................................................................................... .. LES LISTENERS
DEVENEMENTS .............................................................................................................. . .
UTILISATION DES
MODELES........................................................................................................... AUTRES
FONCTIONNALITES............................................................................................................... ..
.. .. .. .. . LE LOOKANDFEEL
................................................................................................................................ LE MODE
DE DISTRIBUTION DAPPLICATIONS
JAVA................................................................................. CHARGEMENTS DES
RESSOURCES SITUEES DANS UN JAR ........................................................................
JAVA WEB START
...................................................................................................................................
INTERNATIONALISATION IN
.............................................................................................................
CONCLUSION............................................................................................................................
................
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Introduction
Dans de nombreux langages de programmation, tels que le C, la ralisation dinterfaces
utilisateur graphiques a pos de nombreux problmes aux dveloppeurs. De plus, en Java les
interfaces doivent tre portables dun systme dexploitation un autre et offrir des fonctions
daccessibilit puissantes raccourcis, internationalisation des applications, Swing constitue la
solution la plus employe pour raliser des interfaces graphiques en Java car cest une logique
simple et efficace mettre en uvre. Swing reprend beaucoup de concept dAWT Abstract
Window Toolkit, lancienne API permettant de raliser des applications graphiques. Toute la
gestion des vnements est dailleurs toujours centralise dans lAPI dAWT, Swing a simplement
ajout de nouveaux composants graphiques avec de nouvelles fonctionnalits. Une autre
librairie existe. Connue sous le nom de SWT Standard Widget Toolkit, cette librairie permet
de se reposer de faon transparente sur la couche graphique du systme dexploitation GTK
pour linux, Carbon pour MacOSX, . Les applications sont donc mieux intgres lenvironnement
de lutilisateur, comme Eclipse. SWT nest cependant pas compatible avec Swing ou AWT.
De plus, cette librairie est trop dpendante dlment nonJava, donc cela pose certains problmes
de portabilit.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Les Java Foundation Classes
Il sagit dun ensemble de librairies Java fournies avec Java SE afin de permettre la cration
dinterfaces graphiques GUI et de fonctionnalits graphiques.
.. API AWT
Cette API existe depuis la version . de JAVA. Les composants appartenant lAPI AWT sont
dits lourds, car ils sappuient sur le systme dexploitation sousjacent pour dessiner les
composants. Cependant, dans la version . de Java, AWT a t tendue pour permettre la cration
de composants dits lgers ne sappuyant pas sur le systme dexploitation. Ceci peut causer
des problmes, surtout au niveau de la portabilit, car les composants ont laspect du systme
sur lequel ils sexcutent, ce qui peut crer des problmes dun systme un autre.
.. API Swing
Cette API est apparue en mme temps que les JFC Java Foundation Classes dont elle
constitue la pierre angulaire. Cette API est totalement crite en langage Java et savre tre
totalement portable. Cependant, Swing na pas pour vocation de remplacer AWT, mais plutt
de la complter.
.. API JavaD
Cette API permet la gestion des graphiques bidimensionnels. Ainsi, il sera ais dajouter du
texte et des graphiques de qualit dans nos applications. De plus, de nombreuses fonctions
utilitaires sont disponibles gestion de limpression, reprsentation de graphiques, rotation, mise
lchelle, lissage de texte, etc.
.. Drag amp Drop
Cette API permet les transferts de donnes entre des applications indpendantes. Ainsi, le
copiercoller et le glisserdplacer sont implments.
.. API Accessibility amp Internationalization
LAPI Accessibility permet dutiliser des fonctions dassistance diverses lattention, entre
autres, des dficients physiques. LAPI Internationalization permet au dveloppeur de crer des
applications multilingues qui sadaptent au contexte gographique et culturel nous
apprendrons nous en servir dans cet essentiel.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Fonctionnement dune application graphique
.. Architecture globale
Une application graphique est un emboitement dobjets. On utilise des objets conteneurs
pour rassembler par groupe les composants que lon affiche. Il peut sagir de fentres, ou bien
des Panels , qui sont plus discrets mais permettent dorganiser la disposition.
Dans linterface utilisateur que nous voyons cidessus, nous pouvons dnombrer des
conteneurs
La fentre, du type JFrame La liste des villes, dans un JPanel Lentre jContentPane , qui est le
panel principale de la fentre.
Les composants que lon affiche sont des champs de texte, mais il en existe beaucoup
dautres boutons, listes droulantes, etc..
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
criture de lapplication
Dans lexemple que nous allons voir, nous allons crire une fentre qui contiendra des Labels
champs texte non ditables. Lorsque vous excuterez lapplication, vous devriez voir lquivalent
de linterface graphique vue plus haut. Lintrt nest pas dexpliquer les composants de faon
prcise, nous le ferrons dans les chapitres suivants, mais de pouvoir dclarer une premire
interface graphique.
... Cration de la classe
Nous allons crer une com.labosun.swing.exercise classe nomme TravelMonth, situe dans le
package
package com.labosun.swing.exercise // import awt and swing objects import java.awt. import
javax.swing. public class TravelMonth extends JFrame
Nous allons par la suite crire le code de cette classe.
... Dclaration des composants graphiques
Nous dclarons maintenant tous les composants dont nous avons besoin. Les explications sur
chaque composant sont en commentaire dans le code
// optional field, used by Serialization private static final long serialVersionUID L // root
container of the JFrame private JPanel jContentPane null // enclose some jlabels private
JPanel jPanel null // display text informations private JLabel travel null private JLabel travel
null private JLabel travel null private JLabel jLabel null
... Initialisation de linterface graphique
Dans un premier temps, le constructeur initialise la fentre, de type JFrame, et ici reprsente
par le mot cl this.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/ This is the default constructor / public TravelMonth super initialize / This method initializes
quotthisquot return void / private void initialize // define the size of the frame this.setSize, //
define the default operation when // the frame is closed
this.setDefaultCloseOperationJFrame.EXITONCLOSE // define which panel is the root panel
this.setContentPanegetJContentPane // define the title of the frame this.setTitlequotTravel
Agencyquot
/
... Dfinir le conteneur racine
Le conteneur correspond la variable jContentPane . Nous allons linstancier dans la mthode
suivante
/ This method initializes jContentPane return javax.swing.JPanel / private JPanel
getJContentPane // if the jContentPane has not been initialized yet if jContentPane null //
create an instance of JPanel jContentPane new JPanel // display the following phrase
quotTravels during this month quot // on the top of your application jLabel new JLabel
jLabel.setTextquotTravels during this month quot jContentPane.addjLabel // dispose a panel
at the center of the frame jContentPane.addgetJPanel return jContentPane
La mthode getJPanel na pas encore t vue. Voici son contenu
/ This method initializes jPanel
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
return javax.swing.JPanel / private JPanel getJPanel // if this object has not been initialized
yet if jPanel null // create an instance of JPanel jPanel new JPanel // the jPanel variable
contains the // following labels, which are // also initialized in the current method travel new
JLabel travel.setTextquotShanghaiquot travel new JLabel travel.setTextquotBeijingquot
travel new JLabel travel.setTextquotMadridquot // add the labels to the jPanel
jPanel.addtravel, null jPanel.addtravel, null jPanel.addtravel, null return jPanel
/
... Lancement de lapplication
La mthode main sert de point dentre dans notre application.
/ This is the entry point of the application param args / public static void mainString args
TravelMonth exercice new TravelMonth // a JFrame is not visible by default
exercice.setVisibletrue
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Les composants Swing
Il existe beaucoup de composants Swing et nous allons devoir les regrouper par ensemble
Les composants de haut niveau les fentres JFrame, JDialog, etc. Les conteneurs dusage
gnral les onglets JTabbedPane, le scrolling JScrollPane, les panels JPanel, Les conteneurs
spcifiques les fentres interne, appeles aussi MDI JDesktopPane, utiliser des calques
JLayeredPane, Les contrles courants les boutons JButton, les listes JList, les menus JMenu,
Les composants graphiques nonditables barre de progression JProgressBar, Les contrles de
hautniveau les slecteurs de fichiers JFileChooser, les tableurs JTable, les explorateurs
JTree,
En rappel du chapitre prcdent, conteneurs sont des composants servant en contenir dautres.
Par exemple dans larbre des composants suivant nous pouvons dnombrer un JFrame la
racine, un JPanel comme conteneur principale pour le JFrame jContentPane ainsi quun
second regroupant labels. Le dernier est la barre de menu, appel jJMenuBar
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Les conteneurs de haut niveau
... Le conteneur JFrame
Cette classe se situe, comme beaucoup dautres, dans le package javax.swing. Dans une
application Swing, le conteneur principal est une JFrame Fentre. Une de ses proprits se
nomme rootPane, une instance de JRootPane Panneau Racine, et cest ce conteneur que
lon ajoutera des composants. Nous reviendrons sur ce composant un peu plus tard.
Nous allons voir en dtails tous ces objets dans la suite du cours. Cidessous, nous allons
prsenter les principales mthodes de la classe JFrame. Parmi les constructeurs de la classe
JFrame o o JFrame JFrameString cre une nouvelle fentre initialement invisible cre une
nouvelle fentre initialement invisible avec un titre spcifi
Mthodes utiles de la classe JFrame o o o o o o o o getContentPane addComponent c
setDefaultCloseOperationint setLayoutLayoutManager lay setVisibleboolean setTitleString
setSizeint, int retourne le contentPane de la fentre ajoute un composant au ContentPane de
la fentre spcifie laction de fermeture par dfaut attribue un Layout qui doit tre utilis par le
ContentPane affiche ou fait disparatre la fentre remplace les mthodes show et hide qui sont
dprcies attribue un titre la fentre attribue des dimensions la fentre
setJMenuBarJMenuBar menu attribue un menu cette fentre
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
... Le conteneur JDialog
/
Peu de choses diffrencient les classes JFrame et JDialog. JFrame est une fentre principale,
alors que JDialog est une fentre secondaire, qui peut tre modale par rapport une autre
JDialog ou JFrame. La classe JDialog est utilise pour afficher des botes de dialogue tandis
que JFrame est utilise en tant que fentre principale de lapplication. Une fentre de type
JDialog sutilise de la mme faon quune JFrame. La classe JDialog hrite de java.awt.Dialog et
est utilise pour crer une bote de dialogue personnalise. JDialog est en effet un conteneur
pratiquement identique JFrame. Voici les diffrents constructeurs auxquels vous avez accs o
o o JDialog cre une JDialog non modale, sans titre et sans parent JDialogDialog,
String,boolean cre une JDialog modale ou non, avec titre et parent
JDialogFrame,String,boolean cre une JDialog modale ou non, avec titre et parent
Une JDialog se positionne dans le coin gauche et haut de lcran, il faut obligatoirement coder
le placement de la bote de dialogue, pour obtenir son placement au centre de la fentre
parent. Voici un exemple dutilisation
La classe JOptionPane fournit une manire facile et pratique dafficher des botes de dialogues
standard. Une bote de dialogue standard de type JOptionPane se prsente de la manire
suivante Zone de Message Zone dimage icne
Zone de saisie JTextField ou JComboBox Zone doptions Boutons
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
Il est noter quune bote de dialogue JOptionPane est modale. JOptionPane nhrite pas de
JDialog, mais directement de JComponent.
/
A ce titre JOptionPane agit comme un container et peut tre plac dans nimporte quel type de
container. Il est possible dinstancier directement des JOptionPane de la faon suivante
JOptionPane.showMessageDialognull, quotVotre disque va tre entirement effacquot,
quotAlertequot, JOptionPane.ERRORMESSAGE
JOptionPane.showConfirmDialognull, quotVoulez vous quitter lapplicationquot,
quotSlectionquot, JOptionPane.YESNOOPTION
Object options quotACCEPTERquot, quotREFUSERquot
JOptionPane.showOptionDialognull, quotLes valeurs doivent elles tres dfinitivement effaces
quot, quotAttentionquot, JOptionPane.DEFAULTOPTION,
JOptionPane.WARNINGMESSAGE, null, options, options
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
String inputValue JOptionPane.showInputDialogquotEntrez une valeurquot
Object possibleValues quotFrancequot, quotRoyaumeUniquot, quotAllemagnequot,
quotIrlandequot, quotBelgiquequot Object selectedValue JOptionPane.showInputDialognull,
quotChoose onequot, quotInputquot, JOptionPane.INFORMATIONMESSAGE, null,
possibleValues, possibleValues
...
Mthodes showXxxDialog
Quelques mthodes showXxxDialog, les plus usites, sont prsentes ciaprs, toutefois cellesci
sont plus nombreuses en ralit.
showConfirmDialogComponent Parent,Object Message
Affiche une DialogBox avec les boutons Oui, Non et Annuler, avec le titre Slectionnez une
option on peut passer null comme parent, sinon un JComponent, et lobject peut tre une
String
showConfirmDialogComponent Parent, Object Message, String title, int optionType, int
messageType
Cette mthode permet de personnaliser les icnes affiches et le groupe de boutons associs
showInputDialogComponent Parent, Object message
Cre une bote de dialogue de saisie
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
showMessageDialogComponent Parent, Object message
/
Cre une bote de dialogue affichant un message
showOptionDialogComponent Parent, Object message, String title, int optionType, int
messageType, Icon icon, Object options, Object initialValue
Cre une bote de dialogue doptions avec un choix initial focus, une icne personnalise, et une
liste de choix Combo
Les constantes associes sont les suivantes messageType dfinit le style de message
ERRORMESSAGE INFORMATIONMESSAGE WARNINGMESSAGE
QUESTIONMESSAGE PLAINMESSAGE
optionType
dfinit le type de boutons doptions qui apparaissent en bas de la bote de dialogue.
DEFAULTOPTION YESNOOPTION YESNOCANCELOPTION OKCANCELOPTION
Valeurs de retour lorsquune fonction showXxxDialog retourne un entier, les valeurs possibles
sont
YESOPTION NOOPTION CANCELOPTION OKOPTION CLOSEDOPTION
...
Le conteneur JWindow
JWindow est un cas particulier de fentre. Cela ressemble une JFrame sans pourtour
bordure. Cette fentre nest ni redimensionnable, ni dplaable par lutilisateur. Il nexiste pas non
plus de bouton pour fermer lapplication, cest au dveloppeur de programmer la fermeture de
ce type de fentre. La classe JWindow est trs utilise pour coder un splash screen, cette image
qui saffiche au lancement dune application pendant la dure de linitialisation de cette dernire.
...
Le conteneur JApplet
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Un applet est un petit programme quun navigateur capable dinterprter le Java, par exemple
Internet Explorer ou Netscape Navigator, peut tlcharger partir dinternet et excuter. JApplet
est une sous classe de java.applet.Applet. Comme JApplet est un conteneur Swing de
hautniveau, chaque applet Swing a un panneau racine root pane, ainsi quun content pane
unique. Pour ajouter un composant votre applet, vous devez donc lajouter au content pane
de votre JApplet, et pas directement dans lapplet.
Inclure un applet dans une page HTML Pour ajouter un applet dans une page HTML, il est
recommand de linclure en utilisant la balise applet de cette faon
ltapplet codequotMonApplet.classquot widthquotquot heightquotquotgt lt/appletgt
Si vous souhaitez visualiser lapplet que vous avez incluse dans votre page HTML quon
appellera pour lexemple maPageAvecMonApplet.html, vous pouvez lexcuter en utilisant
lapplication appletviewer, prsente dans le JDK, en ligne de commande, de cette faon
appletviewer maPageAvecMonApplet.html Vous pouvez galement tout simplement charger
votre page HTML dans votre navigateur. Le cycle de vie dun applet Basiquement, il y a
quatre mthodes dans la classe Applet init Cette mthode est utilise pour linitialisation de
lapplet. Elle est appele aprs les attributs param de la balise applet . start Cette mthode est
automatiquement appele aprs la mthode init. Elle est galement appele chaque fois que
lutilisateur retourne la page contenant lapplet aprs avoir visit dautres pages. stop Cette
mthode est automatiquement appele chaque fois que lutilisateur quitte la page contenant
lapplet. Vous pouvez utiliser cette mthode pour stopper une animation. destroy Cette mthode
est appele uniquement quand le navigateur est teint normalement. Ainsi, lapplet peut tre
initialis une et seulement une fois, dmarr et stopp une ou plusieurs fois dans sa vie, et dtruit
une et seulement une fois.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Les conteneurs dusage gnral
... Le conteneur JPanel
Le conteneur JPanel est lun des conteneurs les plus utiliss. Il sert souvent rassembler les
composants par groupes afin de simplifier la disposition. Laspect graphique dun JPanel est
rduit au strict minimum, il peut tre peru comme un rectangle, parfois mme invisible
graphiquement. Il est possible de modifier la couleur de fond dun JPanel, sa taille, sa
position, son tat visible, invisible, avec ou sans bordure, etc. JPanel est un nud idal dans une
arborescence de composants. La cration dun nouveau JPanel nest cependant pas
obligatoire. En effet, vous pouvez rutiliser le JPanel dfinit par dfaut dans votre JFrame en
utilisant la mthode getContentPane qui permet de rcuprer ce dernier. Lajout dun composant
dans un JPanel se fait par le biais de la mthode add hrite de Container.
JFrame myFrame new Jframe JPanel p new JPanel JPanel p new JPanel JButton button
new JButton JButton button new JButton JButton button new JButton p.addbutton
p.addbutton p.addbutton JLabel myLabel new JLabel JTextField myTextField new JTextField
p.addmyLabel p.addmyTextField myFrame.getContentPane.addp
myFrame.getContentPane.addp
Voici une reprsentation hirarchique de lensemble de vos composants
Exemple dimbrication des composants de Swing
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
... Le conteneur JScrolPane
/
Lorsque le composant que lon cherche afficher est trop grand une image, un tableau, un
champ texte,, il est alors possible de faire appel au conteneur JScrollPane afin dutiliser une
barre de dfilement. JScrollPane, contrairement JPanel, naccepte quun seul composant. Il a
un impact graphique plus important que JPanel du fait de la prsence de barre de dfilement.
JScrollPane propose une barre de dfilement Lacceptation dun composant dans un
JScrollPane est un processus particulier. En effet, le JScrollPane forme une vue sur le
composant, on nutilise pas add mais la mthode setViewportViewComposant. Voici un
exemple de code
JScrollPane sp new JScrollPane JLabel monLabel new JLabelquotMon Libellquot
sp.setViewportViewmonLabel fenetre.getContentPane.addsp // // // // // // dclaration du
JScrollPane dclaration du libell formation de la vue sur le composant ajout de JScollPane la
fentre principale
...
Le conteneur JSplitPane
JSplitPane est un conteneur qui permet de sparer une fentre en deux parties dont les
surfaces peuvent changer dynamiquement. Ce conteneur sutilise de faon classique, mais il
ne peut contenir que deux composants ou conteneurs, un de chaque ct de la barre de
sparation.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
JSplitPane permet de diviser verticalement une partie de la fentre JSplitPane peut tre orient
horizontalement ou verticalement, suivant que lon utilise les mthodes suivantes elles vont
par o setLeftComponentcomposant o setRightComponentcomposant ou o
setTopComponentcomposant o setBottomComponentcomposant Dautres mthodes servent,
quant elles, permettre ou non de redimensionner la taille des deux parties dynamiquement o
setContinuousLayouttrue Dynamique Modifier o setContinuousLayoutfalse Statique Ne pas
Modifier Enfin, il existe aussi une mthode qui permet le double clic sur la barre pour la faire
apparatre ou disparatre brusquement. setOneTouchExpandabletrue
...
Le conteneur JTabbedPane
Ce conteneur permet dafficher plusieurs panneaux qui partagent le mme espace graphique.
Laccs chaque panneau se fait par le biais donglets le plus souvent situs en haut du
conteneur.
JTabbedPane permet de partager lespace de travail Les trois constructeurs existants sont
les suivants o JTabbedPane cre un TabbedPane vide par dfaut. o JTabbedPaneint
tabPlacement spcifie le placement des onglets
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
o
JTabbedPane.TOP JTabbedPane.BOTTOM JTabbedPane.LEFT JTabbedPane.RIGHT
JTabbedPaneint tabPlacement, int tabLayoutPolicy politique daffichage des onglets
JTabbedPane.WRAPTABLAYOUT JTabbedPane.SCROLLTABLAYOUT
On peut ensuite crer les onglets un un laide de la mthode addTab
JTabbedPane monPanneau new JTabbedPane JPanel pan new JPanelnew BorderLayout
JPanel pan new JPanelnew BorderLayout ... monPanneau.addTabquotOnglet quot, pan
monPanneau.addTabquotOnglet quot, pan ... getContentPane.addmonPanneau
...
Le conteneur JToolBar
La classe JToolBar permet davoir une barre doutils avec des boutons de raccourci.
JToolBar permet de placer des raccourcis dans une barre verticale ou horizontale
JToolBar toolBar new JToolBar toolBar.addnew JLabelquotmon testquot
myFrame.getContentPane.addtoolBar
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Les conteneurs spcifiques
... JRootPane
Une instance de JRootPane est cre automatiquement par la JFrame lorsque son
constructeur fait appel la mthode createRootPane. Le JRootPane ainsi cr contient les lments
suivants o ContentPane un JPanel par dfaut o MenuBar un JMenuBar null par dfaut o
GlassPane un JPanel par dfaut o LayeredPane un JLayeredPane Voici lillustration des
diffrents lments voqus prcdement MenuBar
GlassPane LayeredPane
ContentPane
ContentPane est un panneau cr lui aussi par dfaut. Il reoit les composants laide de
linstruction suivante
maJFrame.getContentPane.addmonComponent
MenuBar nexiste pas par dfaut il est null, donc pas encore instanci. Cependant, on peut le
dfinir avec la mthode suivante
setJMenuBarmenu
GlassPane est transparent et savre trs utile lorsquil va sagir dintercepter des vnements gnrs
par la souris. LayeredPane correspond un type particulier JLayeredPane, et il va permettre
de contenir des fentres filles linstar des applications MDI de Microsoft.
Nous allons tudier davantage ces quatre derniers objets.
...
ContentPane
Il sagit du conteneur associ au JRootPane, et qui contient lensemble des composants que
nous dtaillerons plus tard les boutons, les listes, .
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JMenuBar
JMenuBar est une barre de menus. Il ne peut en exister quune seule par JFrame. Une
instance de JMenuBar est compose de plusieurs instances de JMenu, qui sont les lments
visibles directement dans la barre de menus. Chaque instance de JMenu peut contenir
plusieurs instances de JMenuItem, qui sont les lments visibles quand lutilisateur clique sur
un menu.
JMenuBar permet dafficher des barres de menu
Voici la liste des mthodes les plus utilises afin de construire une fentre avec une barre de
menus o Classe JMenuBar JMenuBar addJMenu Classe JMenu JMenu JMenuString s
addJMenu o addJMenuItem item addSeparator
Constructeur unique. Mthode dajout dun menu la barre de menus.
o
Constructeur par dfaut. Constructeur dun menu avec son libell Mthode dajout dun JMenu au
menu afin dobtenir des sousmenus. Mthode dajout dun JMenuItem au menu Mthode dajout
dune barre de sparation
Classe JMenuItem Elment de menu JMenuItem Constructeur par dfaut JMenuItemString s
Constructeur dun lment de menu avec son libell addActionListenerActionListener al Mthode
dajout de Listener, permettant la gestion des vnements nous verrons les Listener plus loin
dans ce document. Classe JFrame setJMenuBarJMenuBar menu menus JFrame.
o
Mthode pour transmettre une barre de
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Nous reviendrons sur ce composant de faon plus dtaille dans la partie sur les contrles
basiques.
...
GlassPane
Le composant GlassPane reprsente un panneau transparent positionn au dessus du
JRootPane permettant de capturer les vnements de souris. Le GlassPane par dfaut est
accessible via les mthodes getGlassPane et setGlassPaneComponent c de linterface
RootPaneContainer implmentes par les conteneurs ayant un JRootPane. Ce composant agit
comme un calque qui recouvre notre conteneur et qui peu intercepter les vnements ou
superposer des lments graphique. Par exemple, on peut utiliser le composant GlassPane
pour dsactiver tout un ensemble de composants en intercepetant leurs vnements. On peut
galement lutiliser pour superposer des lments graphiques. En pratique, on personnalise
notre propre GlassPane afin de laffecer au GlassPane par dfaut via la mthode
setGlassPaneComponent c. Dans ce cas prcis, lobjet en paramtre serait notre GlassPane
personnalis. Voici un exemple de code permetttant reprsentant un composant GlassPane
personnalis
// Cre une classe reprsentant notre GlassPane personnalis. // Ce GlassPlane est un
JComponent qui implmente ItemListener pour la gesion des // vnements. class
MonGlassPane extends JComponent implements ItemListener Point point //Ragit au
changement dtat dun lment. Affiche ou cache la GlassPane. //Quand llment est slectionn
alors le GlassPane est visible sinon non. public void itemStateChangedItemEvent e
setVisiblee.getStateChange ItemEvent.SELECTED //Dessine un point rouge sur la
GlassPane selon les coordonnes du point. protected void paintComponentGraphics g if point
null g.setColorColor.red g.fillOvalpoint.x , point.y , , //Modifie la position du point. public void
setPointPoint p point p //Constructeur crant un couteur personnalis pour les diffrents lments
de //la fentre. //Redirige les couteur de mouvement et de clique de souris vers lcouteur
//personnalis. public MyGlassPaneAbstractButton aButton, JMenuBar menuBar, Container
contentPane CBListener listener new CBListeneraButton, menuBar, this, contentPane
addMouseListenerlistener addMouseMotionListenerlistener
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
... JLayeredPane
JLayeredPane est un conteneur qui peut possder un nombre de couches. Les composants
contenus dans un Layer une couche de JLayeredPane sont organiss selon leur position
dans un environnement en Dimensions hauteur, largeur et profondeur.
JLayeredPane permet de dfinir une profondeur aux lments contenus Chaque JLayeredPane
est caractris par la possibilit dajouter un composant une couche. Pour dfinir la priorit de cette
couche on doit prciser une priorit. Une valeur de type Integer donne ainsi la priorit de la
couche par rapport aux autres. Cette priorite joue galement sur lordre daffichage. En effet,
plus la valeur est grande plus le panel sera prioritaire et donc mise en avant. Par exemple,
lorsque lon souhaite ajouter un composant JLabel dans notre JLayeredPane, on spcifie une
valeur de type Integer dfinissant dans quel couche il sera ajoute. Pour cela nous avons deux
manires de procder. Dune manire personnalise en attribuant une valeur de type Integer en
second paramtre.
layeredPane.addlabel, new Integer
Dune manire prdfinie, le JLayeredPane prvoit des valeurs par dfaut stock dans des
constantes.
layeredPane.addlabel, JLayeredPane.DEFAULTLAYER
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
La profondeur Depth
/
Lorsquun composant est contenu dans un Layer couche, ce dernier sappropie la priorit du
Layer. Mais, un composant est aussi reprsent par son index. Lindex est une valeur entire
diffrente pour chacun des composants du JLayeredPane. On peut interroger un composant
pour connatre son index, mais on ne peut pas changer lindex dun composant. Chaque Layer
dun JLayeredPane est reprsent par un objet Integer. La classe JLayeredPane dfinit les six
constantes Integer. Voici dans lordre du moins prioritaire au plus prioritaire.
o o o o o o FRAMECONTENTLAYER DEFAULTLAYER PALETTELAYER MODALLAYER
POPUPLAYER
DRAGLAYER
Lajout de Layer Lorsque lon ajoute un composant au JLayeredPane laide de la mthode
addComponent, celuici est plac dans le Layer DEFAULTLAYER reprsent par Integer Pour
ajouter un composant un Layer particulier, on utilise la mthode addComponent, Object. Pour
le Layer par exemple, on passera lobjet Integer. On peut aussi passer les valeurs des Layers
standards, par exemple JLayeredPane.POPUPLAYER Pour ajouter un composant un Layer
particulier et une position donne, on utilisera la mthode addComponent composant, Object
obj, int position. .... JDesktopPane
JDesktopPane est une extension de JLayeredPane spcialement construite pour grer des
fentres filles du type JInternalFrame. Il est plus souvent utilis que JLayeredPane car plus
fonctionnel.
JDesktopPane permet de grer des sousfentres JDesktopPane permet dajouter des
composants laide de la mthode addComponent. Dans le cas de JDesktopPane, le
composant que lon va ajouter est un objet de la classe JInternalFrame qui correspond aux
fentres filles dune application MDI.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
o
En plus de la mthode add, dautres mthodes peuvent tre utiles, comme JInternalFrame
getAllFrames retourne une collection de JInternalFrame actuellement affiches dans le
JDesktopPane. o setSelectedFrameJInternalFrame f rend la JInternalFrame f active. Il est
accessible par le biais des mthodes getContentPane et setContentPaneContainer c de
linterface RootPaneContainer implmentes par les conteneurs ayant un JRootPane.
....
JInternalFrame
JInternalFrame est une fentre qui peut tre dplace, agrandie, rduite, iconifie, lintrieur dun
JDesktopPane. JInternalFrame contient un JRootPane comme JFrame. On peut donc avoir
accs son GlassPane, ContentPane, LayeredPane, et MenuBar. On va donc agir comme on
le faisait avec JFrame. Voici cidessous des mthodes utiles o o o o setLocationint x, int y dfinit
la position de la JInternalFrame. setLocationRelativeTonull positionne selon le centre de
lcran. setSizeint,int dfinit la taille de la fentre. setDefaultCloseOperation ici, on donnera la
constante HIDEONCLOSE DISPOSEONCLOSE DONOTHINGONCLOSE
setResizableboolean dfinit si la fentre peut tre retaille ou non. setIconifiableboolean dfinit si la
fentre peut tre iconifie ou non setIconboolean iconifie / desiconifie la fentre.
setMaximizableboolean dfinit si la fentre peut tre agrandie ou non setMaximumboolean
maximise la fentre ou revient la taille normale setClosableboolean dfinit si la fentre peut tre
ferme ou non setClosedboolean ferme la fentre
ooooooo
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Les composants courants
Jusquici nous avions seulement abord le cas des conteneurs , cependant, ce qui fait la
vritable richesse dune interface graphique est lutilisation des composants les boutons, les
champs de saisi, les images, etc. Nous allons maintenant voir ceux les plus communs, et les
plus simples mettre en uvre.
..
La classe JComponent
La classe JComponent est la classe mre de tous les composants Swing hormis les
conteneurs de haut niveau. Elle tend la classe java.awt.Container. Elle apporte de
nombreuses fonctionnalits aux composants Swing, tel que le support des bordures, la
possibilit dassocier des icnes aux composants, le support des ToolTips, etc. Les principales
mthodes de ce composant sont o JComponenent Constructeur par dfaut o createToolTip Cre
une bulle daide o getBorder Retourne la bordure du composant ou null si elle nest pas dfinie
o getPreferredSize Retourne la taille prfre o getMinimumSize Retourne la taille minimale o
getMaximumSize Retourne la taille maximale o paintGraphics g Dessine le composant o
requestFocus Demande avoir le focus o setVisibleboolean aFlag Dfinit si le composant est
visible ou non o setBackgroundColor bg Dfinit la couleur de fond o setBorder Dfinit la
bordure o setDoubleBufferedboolean aFlag Dfinit si le double buffering sera utilis o
setPreferredSize Dfinit la taille prfre o setMinimumSize Dfinit la taille minimale o
setMaximumSize Dfinit la taille maximale o setToolTipTextString text Cre une bulle daide
avec le texte spcifi o setVisibleboolean aFlag Dfinit t si le composant sera affich ou non
..
Les composants boutons
La classe AbstractButton est la classe de base partir de laquelle drivent plusieurs autres
composants. Vous nutiliserez pas directement la classe AbstractButton, car, comme son
nom lindique, cette classe ne peut pas tre instancie. Vous devrez donc utiliser une des
classes filles suivantes
...
AbstractButton
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Ce composant abstrait fournit les lments communs aux boutons ainsi quaux entres dans la
barre de menu. On remarque quil hrite de JComponent, et donc de tous les comportements
qui en dcoulent affichage dune bordure, dfinition dune taille par dfaut,. Cette classe proprose
des lments intressants qui servent la gestion des vnements dun bouton, lorsquon le clic par
exemple void addActionListenerActionListener l
Ajoute un ActionListener au bouton nous traiterons de cette interface plus tard.
ActionListener getActionListeners
Retourne la liste des ActionListener inscrit aux vnements du bouton. void
removeActionListenerActionListener l
Supprime lActionListener spcifi en paramtre. void doClick
Simule un clic quotclickquot. protected void fireActionPerformedActionEvent event
Simule un vnement. String getActionCommand void setActionCommandString
actionCommand
Dfinie/Retourne lidentifiant du bouton. Cet identifiant permet de savoir exactement quel
composant a gnr lvnement. void setEnabledboolean b
Active ou dsactive le bouton. Autres mthodes couramment utilises void setTextString text
Dfinit le texte affich par le bouton void setUIButtonUI ui
Dfinit le LookampFeel qui rend ce composant.
...
JButton
JButton est un bouton poussoir classique trs simple. Tout ce que nous savons sur JLabel
sapplique un JButton. Nous pouvons lui ajouter des images, spcifier lalignement, ou encore
appliquer des
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
couleurs darrire et davant plan. De plus, nous pouvons ajouter des Listeners ActionListener,
ChangeListener, ItemListener pour capturer les vnements. Nous reviendrons en dtail sur
cette partie dans le chapitre Erreur Source du renvoi introuvable. qui y est ddi. Mthodes et
classes de base Cre un bouton sans image et sans texte Cre un bouton avec une image Cre
un bouton avec un texte Cre un bouton avec un texte et une image Dfinit lalignement
horizontal du contenu Dfinit lalignement horizontal du contenu Dfinit la position du texte
relativement limage Idem mais sur laxe des y Permet de spcifier ou de remplacer tout
moment limage du bouton o setPressedIconIcon Permet de spcifier une image lorsque le
bouton est press o setRolloverIconIcon Permet de spcifier une image lorsque le bouton est
survol o getText Rcupre le texte du bouton o getIcon Rcupre licne du bouton o setIconIcon
Permet de spcifier limage du bouton o setTextString Permet de spcifier le texte pour le
bouton supporte le html o setMnemonicchar Cre un raccourci vers un caractre ex
setMnemonicC correspond AltC o addActionListenerActionListener Ajouter le bouton un
ActionListener o setEnabledboolean Activer / Dsactiver le bouton o setActionCommandString
Permet de dfinir une commande lie au Listener du bouton Dans votre application, il se peut
galement que vous souhaitiez dfinir le bouton par dfaut parmi tous les boutons prsents. Pour
cela, vous devrez utiliser la mthode setDefaultButtonJButton button de votre RootPane. Voici
le code illustrant ce principe
JFrame myFrame new JFramequotCommercial Surveyquot JButton btnSend new
JButtonquotSendquot myFrame.addbtnSend
o JButton o JButtonIcon o JButtonString o JButtonString, Icon o setHorizontalAlignementint o
setVerticalAlignementint o setHorizontalTextPositionint o setVerticalTextPositionint o
setIconIcon icon
Voici un exemple de bouton affichant Send
On remarquera galement JToggleButton, qui est une variante du JButton. En effet, il saffiche
dune faon particulire une fois quil a t slectionn en fonction du Look amp Feel slectionn.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JRadioButton
Un JRadioButton est un bouton radio. Il sutilise comme la classe JCheckBox, mais permet
de spcifier quil ny a quun seul choix possible parmi toutes les propositions offertes par
linterface graphique. La classe JRadioButton doit cependant tre utilise conjointement avec la
classe ButtonGroup si vous souhaitez obtenir le comportement standard de choix unique
parmi tous les choix proposs. La classe ButtonGroup permet donc de regrouper des boutons
qui peuvent mettre en place un mcanisme de slection bas sur lexclusion mutuelle comme
avec les boutons radio classiques. Il suffit pour cela de grouper les boutons en question dans
une instance de ButtonGroup, laide de la mthode addButton. Dans le code suivant, nous
allons instance des objets de type JRadioButton puis nous les plaons dans un ButtonGroup.
/ create radio buttons / // mario choice JRadioButton buttonMario new
JRadioButtonquotlthtmlgtltfont colorredgtMario Broslt/fontgtlt/htmlgtquot // this one is
selected by default buttonMario.setSelectedtrue // sonic choice JRadioButton buttonSonic
new JRadioButton quotlthtmlgtltfont colorbluegtSonic the hedgehoglt/fontgtlt/htmlgtquot //
warcraft choice JRadioButton buttonWarcraft new JRadioButton quotlthtmlgtltfont
colorgreengtWarcraftlt/fontgtlt/htmlgtquot // group the radio buttons together ButtonGroup
group new ButtonGroup group.addbuttonMario group.addbuttonSonic
group.addbuttonWarcraft
Afin de rcuprer llment slectionn, nous devons appel la mthode ButtonGroup.getSelection .
Nous rcuprerons ainsi le modle de bouton radio slectionn. Nous verrons plus tard lintrt dun
modle mais retenons pour linstant quil sagit dun objet contenant les donnes et les tats du
composant. Voici un exemple dapplication utilisant les boutons radio
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Nous avons pu remarquer galement la syntaxe HTML que nous venons dutiliser pour spcifier
les couleurs des zones de texte.
..
Les composants texte
... Le JLabel
Lorsque vous ralisez une application graphique, il est important dy ajouter suffisament de
libells afin de faciliter lergonomie de cette dernire. Vous devrez pour cela utiliser la classe
JLabel qui est lun des composants Swing les plus simples. Il permet dafficher du texte, des
icnes, ou les deux, et cela dans nimporte quelle position. Voici un descriptif des mthodes les
plus employes o o o o o o o o o o o o JLabel JLabelIcon JLabelIcon, int JLabelString
JLabelString, int JLabelString, Icon , int setVerticalAlignementint alignement
setHorizontalTextPositionint Cre un libell sans image et avec une chane vide pour titre Cre
un libell avec une image Cre un libell avec une image aligne horizontalement Cre un libell
avec du texte Cre un libell horizontalement avec du texte align
Texte image et alignement horizontal Dfinit lalignement horizontal du contenu Dfinit la
position du texte relativement limage Permet de spcifier ou de remplacer tout moment limage
du libell Permet de spcifier le texte pour le label supporte certaines balises html
setHorizontalAlignementint alignement Dfinit lalignement horizontal du contenu
setVerticalTextPositionint textPosition Idem mais sur laxe des y setIconIcon setTextString
jLabel new JLabel
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
jLabel.setTextquotJLabelquot
/
Lapplication suivante utilise des JLabel afin dafficher un message
Si vous souhaitez ajouter une image dans votre JLabel, vous devrez utiliser la classe
ImageIcon en spcifiant dans le constructeur le chemin vers limage gif ImageIconString
filename
pictureLabel new JLabel pictureLabel.setTextquotquot // load the picture thanks to the
ClassLoader, // this is required in order to load a picture from a jar URL iconURL
getClass.getResourcequot/age/.jpgquot pictureLabel.setIconimageIcon
Nous reparlerons du ClassLoader la fin de cet essentiel. Dans lapplication suivante, nous
avons utilis un JLabel afin dafficher une image
Par dfaut, lalignement horizontal est gauche pour un libell de texte seulement. Pour un libell
contenant une image, lalignement est au centre.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Pour spcifier lalignement, on peut utiliser linterface SwingConstants de la manire suivante
SwingConstants.LEFT SwingConstants.CENTER SwingConstants.RIGHT
SwingConstants.TOP SwingConstants.BOTTOM
Voici un diagramme des diffrents positionnements possibles
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
... La classe JTextComponent
Il sagit de la classe de base pour les composants Swing utilisant du texte. Il fournit de
nombreuses fonctionnalits concernant la manipulation du texte, concernant des composants
que nous allons voir JTextField, JTextArea, JEditorPane.
...
JTextField
Ce composant est lun des plus simples utiliser pour la saisie de donnes. Il ne permet de
saisir quune seule ligne de texte et ne prend pas en compte les styles gras, italique . On peut
utiliser lun des deux constructeurs suivants o o JTextField JTextFieldString text Cre un
champ de saisie vide Cre un champ de saisie avec un texte par dfaut
Si vous souhaitez rcuprer le contenu du champ de saisie, il vous faudra utiliser la mthode
getText qui vous retournera un objet de type String.
...
JFormattedTextField
Cette classe hrite de JTextField en ajoutant le support du formattage de valeurs.
...
JPasswordField
Ce composant permet de crer un champ pour la saisie des mots de passe. Il sutilise de la
mme manire que le composant prcdent, mais, lorsque vous saisissez un caractre, celuici est
remplac par le caractre par dfaut . Ce dernier peut tre remplac laide de la mthode
setEchoCharchar. Remarque Pour des raisons de scurit, la mthode getText de ce
composant est viter. Il faut utiliser la mthode getPassword qui retourne un tableau de
caractres char. En effet, il est beaucoup plus difficile de retrouver dans la mmoire dun
programme la valeur dun tableau de caractre que dune instance de type String. Voici un
exemple dutilisation
JPasswordField myPassField new JPasswordField myPassField.setEchoChar char result
myPassField.getPassword String result new Stringresult
// change by
Voici le rsultat, au niveau graphique
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
La valeur du champ de caractre est masque
...
JTextArea
JTextArea est un composant semblable au JTextField, car il permet lutilisateur de saisir du
texte. Mais ce composant permet dafficher plusieurs lignes de texte, alors que le JTextField
ne permettait den saisir quune seule. A linstar de JTextField, il ne permet pas dafficher des
polices et des couleurs de diffrents types. Il peut grer le passage la ligne et permettre de
spcifier si on peut couper un mot ou non. Lajout de texte dans un JTextArea peut se faire par
le biais de lutilisation de lun des deux constructeurs suivants o JTextArea String text o
JTextArea String text, int rows, int columns Il est aussi possible dajouter du texte grce aux
mthodes suivantes o o o o appendString text insertString text, int position
replaceRangeString text, int start, int end setTextString text Ajout dune chane la fin du
document Ajout dune chane une position donne Remplace la chane contenue entre start et
end Remplace tout le texte par la chane
Voici un exemple dutilisation
JTextArea myField new JTextArea myField.setLineWraptrue myField.setWrapStyleWordtrue
// initialize // start new lines automaticaly // do not cut words
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Nous avons ajout un champ texte afin de rcuprer les commentaires Le composant JTextArea
est souvent utilis avec un JScrollPane afin dajouter des barres de dfilement.
JTextArea myField new JTextArea // initialize jScrollPaneComment new JScrollPane //
initialize the scrollpane container jScrollPaneComment.setViewportView getJTextArea// add
the component to its container
Grce au JScrollPane, notre champ texte est plus simple utiliser
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JEditorPane
La classe JEditorPane permet davoir un composant graphique afin dditer facilement du texte
difrents formats. Des moteurs de rendu, implmentant linterface EditorKit, sont proposs pour
les formats text/plain affiche du texte au format texte brut text/html permet dafficher du HTML
., via la javax.swing.text.html.HTMLEditorKit text/rtf support du format Rich Text Format.
Dans les lignes suivantes nous affichons la page principale de la documentation de java
classe
// URL url null try url new URLquothttp//java.sun.com/jse/../docs/index.htmlquot jEditorPane
new JEditorPaneurl catch MalformedURLException e e.printStackTrace catch IOException e
e.printStackTrace // activation html renderer jEditorPane.setContentTypequottext/htmlquot //
display the component with a horizontal and a vertical scrolling bar JScrollPane jScrollPane
new JScrollPane jScrollPane.setViewportViewjEditorPane //
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Affichage dune page html dans Java
...
JTextPane
Le JTextPane accepte diffrentes mises en forme ainsi que lajout dautres composants
graphiques ou dimages, dans ce sens il sagit dune amlioration de composant JTextArea.
JTextPane repose sur le concept de styles dfinis en Java, quil est possible de personnaliser.
On utilise lobjet StyledDocument, qui est le modle de ce composant, afin de dfinir le contenu
et les proprits de champs style. Voici les mthodes employer pour ajouter dautres composants
ou des images dans votre JTextPane o o insertComponentComponent c insertIconIcon i
ajout dun composant ajout dune image
Lintrt de ces mthodes est donc de placer des composants comme des boutons, des labels,
etc. au sein mme du champ texte. Son utilisation tant particulirement difficile, nous ne
ltudierons pas ici. Nous pouvons cependant vous rediriger vers ladresse suivante ou
davantage dexemple et dexplications sont disponibles
http//java.sun.com/docs/books/tutorial/uiswing/components/text.html
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Le champ ditable JTextPane affiche de nombreux composants
..
Composants proposant une liste de valeurs
... JCheckBox
Une JCheckBox est une case cocher, on peut ajouter un libell ce composant directement lors
de sa cration afin de rendre plus explicite son utilisation. Il faut pour cela utiliser le
constructeur suivant JCheckBoxquotMa case a cocherquot. Les JCheckBox sont utiliss lors
de choix multiples que lutilisateur doit raliser par le biais de linterface.
//In initialization code chinButton new JCheckBoxquotChinquot
chinButton.setMnemonicKeyEvent.VKC chinButton.setSelectedtrue glassesButton new
JCheckBoxquotGlassesquot glassesButton.setMnemonicKeyEvent.VKG
glassesButton.setSelectedtrue hairButton new JCheckBoxquotHairquot
hairButton.setMnemonicKeyEvent.VKH hairButton.setSelectedtrue teethButton new
JCheckBoxquotTeethquot teethButton.setMnemonicKeyEvent.VKT
teethButton.setSelectedtrue
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JComboBox
Ce composant reprsente une liste droulante, dans laquelle lutilisateur peut choisir un seul
lment la fois. Il est utilis pour prsenter une liste de valeurs possibles, au sein desquelles
lutilisateur effectue son choix. La classe JComboBox est en fait constitue dun composant
JList tudi dans le point suivant et dun JButton.
Voici la liste des diffrents constructeurs de cette classe o o o o JComboBox
JComboBoxVector JComboBoxObject Cre une ComboBox avec un modle par dfaut Cre une
ComboBox qui contient les lments dun vecteur Cre une ComboBox qui contient les lments
dun tableau
JComboBoxComboBoxModel Cre une ComboBox qui contient les lments dun modle
Voici la liste des mthodes les plus utilises pour ce composant o o o o o o o o o o o o o o o
addActionListenerActionListener addItemObject getSelectedIndex getSelectedItem
insertItemAtObject, int paramString removeAllItems removeItemObject removeItemAtint
setEditableboolean setEnabledboolean Ajoute un ActionListener la ComboBox Ajoute un
objet la liste Retourne lindex int correspondant la slection Retourne lobjet correspondant la
slection Insre un objet lemplacement spcifi index Retourne la chane correspondant la
slection Supprime tous les objets de la ComboBox Supprime un objet de la liste Supprime un
objet de la liste partir de son index Rendre ditable ou non la ComboBox Activer / dsactiver le
composant
setMaximumRowCountint Dfinit le nombre de lignes affichables sans ascenseur
setModelComboBoxModel Dfinit le modle de donnes que doit utiliser la ComboBox
setSelectedIndexint setSelectedItemObject Dfinit lobjet slectionner par son index er objet
Dfinit lobjet existant slectionner dans la ComboBox
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JList
Le composant JList est assez similaire JComboBox. Le composant JComboBox est en effet
bas sur un composant JList, mais il utilise un modle de slection ListSelectionModel qui
permet uniquement la slection unique SINGLESELECTIONONLY. Le modle de slection de
JList supporte quant lui trois types de slections dont nous parlerons dans ce chapitre. La
JList tout comme le JTree et la JTable chapitres suivants a la proprit dafficher une liste de
valeurs construite partir dun vecteur dobjets. Les objets construits ne doivent respecter
quune seule contrainte, qui est dimplmenter une fonction toString, qui retourne ce qui doit tre
affich. Voici la liste des diffrents constructeurs de cette classe o o o o JList JListVector
JListObject JListListModel Cre une JList avec un modle par dfaut Cre une JList qui contient
les lments dun vecteur Cre une JList qui contient les lments dun tableau Cre une JList qui
contient les lments dun modle existant
Voici la liste des mthodes les plus utilises pour ce composant o o o o o o o o o o o o o o o o
getModel setModelListModel setListDataObject setListDataVector setSelectedIndexint
Retourne le modle associ la liste Dfinit le modle associ la liste Dfinit les lements de la liste.
Dfinit les lements de la liste. Dfinit la slection courante par son index
addListSelectionListenerListSelectionListener Ajoute un Listener la liste
setSelectedValueObject, boolean Dfinit la slection courante, le boolen indique sil faut faire
dfiler la liste pour afficher llment setSelectedIntervalint, int getSelectedIndex
getMinSelectionIndex getMaxSelectionIndex getSelectedIndices getSelectedValue
getSelectedValues setSelectionModeint getSelectionMode Dfinit un intervalle de slection
Retourne lindex de la slection courante Retourne lindex du er lment de lintervalle Retourne
lindex du dernier lment de lintervalle Retourne une liste dindex dlments slectionns Retourne
lobjet correspondant la slection courante Retourne une liste dobjets correspondant aux
lments slectionns Dfinit le mode de slection de la liste Retourne le mode de slection de la
liste
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
oooooooo
clearSelection isSelectionEmpty isSelectedIndexint ensureIndexIsVisibleint
getFirstVisibleIndex getLastVisibleIndex setVisibleRowCountint getVisibleRowCount
Dslectionne tous les lments Retourne un slectionn boolen vrifiant aucun lment
Retourne un boolen vrifiant index i slectionn Gnre un dfilement afin que lindex soit visible
Retourne lindex du er lement visible Retourne lindex du dernier lement visible Dfinit le
nombre de lignes visibles Retourne le nombre de lignes visibles
Vous pouvez galement personnaliser le mode de slection. Voici les trois modes de slection
que vous pouvez utiliser avec le composant JList SINGLESELECTION Un seul lment peut
tre slectionn la fois
SINGLEINTERVALSELECTION Plusieurs lments contigus peuvent tre slectionns.
MULTIPLEINTERVALSELECTION par dfaut Toute combinaison est possible.
Voici les deux possibilits que vous avez pour modifier le mode de slection
JList maListe new Jlist maListe.setSelectionModeListSelectionModel.SINGLESELECTION
maListe.getSelectionModel.setSelectionModeListSelectionModel.SINGLESELECTION
Dtecter les changements de slection Parfois, il est ncessaire de dtecter un changement de
slection. Lorsque lon veut, par exemple, modifier une partie de notre interface graphique,
lorsquune ligne est slectionne. Il faut, pour cela, abonner le composant JList laide de la
mthode o addListSelectionListenerListSelectionListener
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Linterface implmenter est donc ListSelectionListener. Cette interface ne spcifie quune seule
mthode redfinir, qui est o valueChangedListSelectionEvent e Cest dans cette mthode que
vous pourrez spcifier laction effectuer lors du changement de slection dans votre JList.
...
JSpinner
JSpinner est un composant compos de trois souscomposants deux petits boutons et un
diteur. Lditeur est par dfaut un panel qui contient un champ de texte format formatted text
field. Les valeurs possibles et courantes du spinner sont gres par son modle.
Une zone de texte, deux boutons le JSpinner est n LAPI Swing fournit trois modles de
spinner SpinnerListModel Les valeurs sont dfinies par un tableau dobjets ou une liste.
SpinnerNumberModel Supporte des squences de nombres de type double, int ou Number.
Vous pouvez spcifier les valeurs minimum et maximum, ainsi que la valeur du pas.
SpinnerDateModel Supporte des squences dobjets Date. Vous pouvez spcifier les dates
minimum et maximum, ainsi que le champ par exemple lanne incrmenter ou dcrmenter. Les
spinners sont similaires aux comboboxes et aux listes dans le sens quils laissent lutilisateur
choisir une valeur dans parmi un ensemble important. Comme les comboboxes ditables, ils
permettent gnralement lutilisateur dentrer une valeur. Contrairement aux comboboxes
classiques, ils nont pas de liste droulante qui peut recouvrir les autres composants. Ils sont
souvent utiliss au lieu des comboboxes ou des listes lorsque lensemble des valeurs
possibles est extrmement grand. Cependant, les spinners doivent seulement tre utiliss quand
les valeurs possibles et leur squence sont videntes.
...
JSlider
La classe JSlider permet davoir une barre de slection utilise pour choisir des valeurs entires
par exemple. Voici un exemple dinitialisation de ce composant
static final int FPSMIN // min value static final int FPSMAX // max value static final int
FPSINIT //initial frames per second ... JSlider framesPerSecond new
JSliderJSlider.HORIZONTAL, FPSMIN, FPSMAX, FPSINIT
framesPerSecond.addChangeListenerthis //Turn on labels at major tick marks.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
framesPerSecond.setMajorTickSpacing framesPerSecond.setMinorTickSpacing
framesPerSecond.setPaintTickstrue framesPerSecond.setPaintLabelstrue
JSlider nous permet ici de dfinir la vitesse dune animation graphique
..
Les composants de menu
... ... JMenuBar JPopupMenu
La classe JPopupMenu permet davoir un menu lors lon ralise un clique droit dans
lapplication. // rdiger
...
JMenu
// rdiger voir ancien cours
...
JMenuItem
// rdiger voir ancien cours
...
JCheckBoxMenuItem
Les classes JCheckBoxMenuItem amp JRadioButtonMenuItem permettent dobtenir des
menus plus attrayants. // rdiger
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
...
JRadioButtonMenuItem
Les classes JCheckBoxMenuItem amp JRadioButtonMenuItem permettent dobtenir des
menus plus attrayants. // rdiger
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Les composants informatifs non ditables
... JProgressBar
La classe JProgressBar permet davoir une barre de progression trs utilise pour symboliser
les temps de copie de fichiers ou de connexion. // rdiger
...
// rdiger
JToolTip
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Les contrles de hautniveau
... JColorChooser
// rdiger voir ancien cours juste une prsentation
...
JFileChooser
// rdiger voir ancien cours juste une prsentation
...
JTable
// rdiger voir ancien cours juste une prsentation
...
JTree
// rdiger voir ancien cours juste une prsentation
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. La gestion des vnements
.. Principe
En Java, toutes les interactions de lutilisateur se traduisent par des vnements, que ce soit un
clic sur un bouton, une slection dans un menu ou encore un simple dplacement de la souris.
Les vnements en Java sont reprsents par des objets qui fournissent des informations sur
lvnement luimme et sur lobjet lorigine de cet vnement source. Le terme employ lorsque lon
parle de gestion des vnements en Java est Listener .
..
Les classes dvnements
... Principe
On trouve la classe java.util.EventObject la base des classes grant les vnements. Elle
reprsente la superclasse pour tous les vnements. Celleci fournit dailleurs une mthode
intressantes getSource. En effet, elle permet de retourner la source de lvnement. Cet objet
source pourra tre alors cast dans son type dorigine. Un vnement est capable dencapsuler
des informations concernant son contexte dapparition o o o o Le composant source de
lvnement. Les coordonnes du clic dans le cas dun MouseEvent. La valeur de la touche tape
pour un KeyEvent.
Lobjet qui intercepte linteraction utilisateur est appel un Listener. Comme ce nom lindique,
son rle principal est dtre lcoute dun composant JButton, JPanel. Le Listener doit sabonner
lvnement auprs du composant. Il demande ainsi au composant de lavertir en cas dinteraction
utilisateur sur ce composant.
Abonnement
Bouton
Listener
Notification
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Le principe de la gestion des vnements
Cest au niveau du composant que lon trouve les mthodes dabonnement aux diffrents
Listeners. Ces mthodes sexpriment sous la forme addXxxListenerXxxListener l o Xxx
reprsente le type dvnement cout. Exemples de mthodes dabonnement o o o o
addActionListener addKeyListener addFocusListener
Par ailleurs, ces mthodes sont hrites de la classe Container et sont donc communes un
grand nombre de composants et conteneurs. On utilise la plupart du temps linterface
ActionListener, qui lon implmente sa guise, pour grer les vnements. Il est aussi possible de
dsabonner un Listener du composant auquel il a t abonn, laide de la mthode
removeXxxListener ou Xxx doit tre remplac par le nom de lvnement.
..
Utilisation
..
vnements spcifiques
... Evnements de java.awt.event
ActionEvent Evnement gnr si on active un bouton via le clavier ou la souris, si on double
clique sur un lment de liste ou si on slectionne un lment de menu.
String getActionCommand retourne le nom de la commande associe un vnement. dans le
cas dun bouton sans action command, retourne son libell
ComponentEvent Evnement gnr lorsquun lment est cach, dplac, redimensionn, ou lorsquil
apparat.
Component getComponent renvoie lobjet lorigine de lvnement le cast peut tre necessaire
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
ContainerEvent Evnement gnr lorsquun lment est ajout ou supprim dun container.
Container getContainer Component getChild renvoie une rfrence au container lorigine de
lvnement renvoie une rfrence llment ajout au container ou supprim
FocusEvent Evnement gnr lorsquun lment gagne ou perd le focus.
boolean isTemporary true si lvnement est temporaire et false dans le cas contraire Une zone
de texte perd temporairement le focus si lutilisateur manipule lascenceur pendant la saisie
KeyEvent Evnement gnr lorsquune touche du clavier est presse.
char getKeyChar int getKeyCode retourne le caractre saisi retourne le code de la touche
presse
nombreuses autres mthodes
MouseEvent Evnement gnr lorsque lon dplace la souris, lorsquon la fait glisser drag, lors du
clic ou du relchement dun bouton.
int getX int getY Point getPoint retourne la position horizontale du pointeur retourne la
position verticale du pointeur retourne les coordonnes du pointeur de la souris dans un objet
java.awt.Point int getClickCount retourne le nombre de clics effrectus lors de lvnement
...
ooooo
Evnements de javax.swing.event
TreeSelectionEvent Changement de la position courante dans un JTree HyperlinkEvent Clic
sur un lien hypertexte JInternalFrameEvent Support des vnements ayant pour source une
JInternalFrame ListSelectionEvent Changement dans la slection
..
Les listeners dvnements
Les Listeners sont crs par limplmentation dune ou de plusieurs interfaces fournies par le
package java.awt.event. Lorsque lvnement survient, la source appelle la mthode des
Listener qui se sont abonns lvnement. Limplmentation dune interface impose donc de redfinir
une ou plusieurs mthodes obligatoires. De plus, des objets, nomms Adapter , fournissent une
implmentation par dfaut o toutes les mthodes ont un corps vide. Ces objets l sont en ralit des
classes, et non des
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
interfaces. Le dveloppeur na plus implmenter toutes les mthodes de linterface, ce qui peuttre
fastidieux. Ils se mettent lcoute dun composant qui sabonne auprs deux et intercepte tous
les vnements, et selon leur nature va ragir en consquence en excutant la mthode cible de
lvnement. Labonnement se fait par le biais des mthodes addXxxListener, o Xxx reprsentent
le type dvnement. Les Listeners les plus communs sont illustrs brivement ici. Un tableau
gnral fait tat de lensemble des Listeners avec les mthodes implmenter ActionListener Dfinit la
mthode pour intercepter les vnements dactions. Il est utilis le plus souvent lors des cliques
sur un bouton par exemple. Le fait dimplmenter ce Listener vous imposera de redfinir la
mthode actionPerformedActionEvent.
void actionPerformedActionEvent ae
ComponentListener Dfinit le comportement adopter quand un lment graphique est cach,
dplac, redimensionn ou affich.
void void void void componentHiddenComponentEvent ce
componentMovedComponentEvent ce componentResizedComponentEvent ce
componentShownComponentEvent ce
ContainerListener Dfinit le comportement adopter quand un lment graphique est ajout ou
supprim dun container.
void componentAddedContainerEvent ce void componentRemovedContainerEvent ce
FocusListener Dfinit le comportement adopter quand un lment graphique a obtenu ou perdu
le focus. Il est utilis lorsquun composant graphique reoit ou perd le focus. Le fait dimplmenter
ce Listener vous imposera de redfinir les mthodes focusGainedFocusEvent et
focusLostFocusEvent. Vous pouvez galement hriter de la classe FocusAdapter au lieu
dutiliser le principe de limplmentation.
void focusGainedFocusEvent fe void focusLostFocusEvent fe
ItemListener peut tre utilis sur plusieurs composants diffrents. Le plus souvent il est mis en
action lors dune slection dans une JComboBox afin de prendre en compte llment slectionn
de manire le plus dynamique possible en redfinissant la mthode
itemStateChangedItemEvent. ListSelectionListener est utilis avec le composant JList pour
grer les vnements lis la slection de valeur dans ce composant en redfinissant la mthode
valueChangedListSelectionEvent. o Listener relatifs la sourie et au clavier
KeyListener Dfinit le comportement adopter quand une touche est appuye, relche ou si une
lettre a t tape.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Ex Touche c appuye appel successif des mthodes. Ex Touche Shift appuye appel successif
des premires mthodes uniquement
void keyPressedKeyEvent ke void keyReleasedKeyEvent ke void keyTypedKeyEvent ke
KeyListener est utilis sur les composants qui permettent lutilisateur de saisir du texte,
JTextField, JPasswordField, MouseListener Dfinit le comportement adopter quand on clique
avec la souris, appuie sur un bouton, relche un bouton, si le pointeur de la souris entre ou
sort de la zone dun lment graphique.
void mouseClickedMouseEvent me void mouseEnteredMouseEvent me
MouseListener est un Listener, comme le suivant qui peut tre employ sur beaucoup de
composants diffrents. Vous pouvez par exemple prendre en compte le clic sur un JLabel
contenant une image. Le fait dimplmenter ce Listener vous imposera de redfinir les mthodes
mouseClickedMouseEvent, mouseEnteredMouseEvent, mouseExitedMouseEvent,
mousePressedMouseEvent, mouseReleasedMouseEvent ou vous pouvez hriter de la classe
MouseAdapter au lieu dutiliser le principe de limplmentation. MouseMotionListener est un
Listener trs semblable au prcdent, cependant celuici vous permettra de grer laction de drag
amp drop. Le fait dimplmenter ce Listener vous imposera de redfinir les mthodes
mouseDraggedMouseEvent, mouseMovedMouseEvent. Si vous ne souhaitez pas redfinir les
deux mthodes mais uniquement une seule dentre elles, vous pouvez hriter de la classe
MouseMotionAdapter au lieu dutiliser le principe de limplmentation.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Utilisation des modles
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Autres fonctionnalits
.. Le lookandfeel
On dit que Swing propose une architecture pluggable lookandfeel . Ce terme signifie que
lapplication peut contrler lapparence look et le comportement feel de son interface
graphique. Ainsi, une application Swing peut muler lapparence et le comportement de la
plateforme, ou sen affranchir et proposer une apparence et un comportement propre et
identique dune plateforme dexcution une autre. De plus, le dveloppeur peut implmenter du
code permettant de modifier le lookandfeel de lapplication dynamiquement.
Voici un exemple des diffrents look amp feel disponibles avec Java
Sous MacOs X
Sous Windows
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Sous Linux GTK Si vous portez une attention particulire cette fonctionnalite, qui est
hautement personnalisable, vous trouverez des complments dinformation ces adresses
http//java.sun.com/docs/books/tutorial/uiswing/misc/plaf.html
http//www.jgoodies.com/index.html
http//java.developpez.com/faq/java/pagegeneralitesAWTSwing lf
franais
..
Le mode de distribution dapplications Java
Afin dassurer la portabilit des applications Java, il ny a pas de possibilit en standard de crer
des fichiers excutables .exe. Cependant, il est posssible de crer des fichiers JAR, qui sont
des fichiers archives Java ARchive. Cest une manire de distribuer les applications Java. Ce
type de fichier se comporte comme un fichier excutable, il est donc aussi simple dutilisation.
Il est possible de crer un fichier JAR en ligne de commande jar cfm jarfile inputfiles Quelques
options pour la commande jar o o o o o Loption c indique que vous souhaitez crer un fichier
JAR Loption f permet de spcifier le nom du fichier darchive cest dans ce fichier que lon va
diriger larchive plutt que dans la sortie standard. Loption m permet de spcifier le fichier
manifest qui va contenir diffrentes informations pour la cration de larchive notamment
lindication de la classe contenant la mthode main jarfile est le nom du fichier JAR que vous
voulez crer, par convention le fichier a une extension .jar. inputfiles regroupe lensemble des
fichiers contenus dans le fichier JAR que vous voulez crer. Les noms de fichiers inclure sont
spars par un espace. Si le nom de fichier est un rpertoire, son contenu est ajout de manire
rcursive.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
Exemple jar cfm NomDuJar.jar monManifest.mf MaClass.class MaClass.class Lordre des
options na pas dimportance, mais il ne doit pas y avoir despace entre chacune des options.
Par ailleurs, si loption f est situe avant loption m, alors le nom du fichier JAR devra tre plac
avant le nom du manifest, et inversement. Cette commande gnrera un fichier JAR compress
dans le rpertoire courant. Cette commande gnrera aussi le fichier manifest monManifest.mf
dans le fichier JAR partir des informations donnes. Ce fichier se situe dans le rpertoire
/METAINF du fichier JAR et se nomme MANIFEST.MF. Cest un descripteur du contenu de
votre fichier JAR, et cest grce ce fichier que votre JAR sera autoexcutable.
Voici un exemple de contenu dun fichier manifest
ManifestVersion . MainClass monpackage.MaClasse
Vous pouvez aussi utiliser un IDE Integrated Development Environment pour automatiser
toute la gnration de votre fichier JAR. Avec Eclipse, un assistant est disponible.
..
Chargements des ressources situes dans un Jar
Comme nous venons de le voir, lorsque lon dploie une application on utilise le format jar
pour y stocker le bytecode mais galement les ressources images, fichiers textes, . Ainsi, afin
de pouvoir tre sr daccder cellesci, que lapplication soit sous forme de jar ou pas, il est
ncessaire dutiliser le ClassLoader. En effet, il se base sur le classpath et non au systme de
fichier. Il existe deux faon de lappeler
URL myResourceURL this.getClass.getResourcequot/myPic.jpgquot ClassLoader loader
Thread.currentThread.getContextClassLoader URL url
loader.getResourcequotmyPic.jpgquot
La deuxime est utilise dans des mthodes statique, car il nest pas possible davoir accs au
pointeur this dans ce cas prcis. Remarque lorsque lon utilise le second exemple, il ne faut
pas faire prcder le chemin vers la ressource dun / .
Le classpath est un zone mmoire dans la machine virtuel qui, au lancement dune application,
liste toutes les classes et les ressources disposition. Pas dfaut, il sagit du rpertoire courant
ainsi que les librairies installes avec la JRE. On peut le configurer avec la variable
denvironnement CLASSPATH.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
..
Java Web Start
Il sagit dun outil permettant de mettre disposition une application partir dinternet. Il faut au
pralable que lapplication soit disponible sous forme de jar sujet trait dans les pages
prcdentes. Ensuite nous allons crire, et surtout commenter, un fichier de dploiement avec
lextension .jnlp . Voici par exemple celui dune application servant de dmonstration
lt jnlp java net launcher protocol gt lt spec java version required . means . or further gt lt
codebase relative URLs specified in href attributes are using this URL as a base gt lt href
This is a URL pointing to the location of the JNLP file itself gt ltjnlp specquot.quot
codebasequothttp//.../tetrisquot hrefquotdemotetris.jnlpquotgt ltinformationgt lt The name of
the application required gt lttitlegtSun laboratory Demo Tetrislt/titlegt lt The name of the
vendor of the application required gt ltvendorgtSupinfolt/vendorgt lt Contains the URL
locating the home page for the Application. lthomepage hrefquot.quot/gt lt A short statement
about the application gt ltdescriptiongtThis is a pleasant game lt/descriptiongt ltdescription
kindquotshortquotgt This application is an educationalpurpose tetrislike. lt/descriptiongt lt
Contains an HTTP URL to an image file in either GIF or JPEG format. gt lt The icons are
used to represents the application gt lticon hrefquotdemotetris.gifquot/gt lt The optional
kindquotsplashquot attribute may be used in an gt lt icon element to indicate that the image
is to be used as gt lt a quotsplashquot screen during the launch of an application. gt lticon
kindquotsplashquot hrefquotdemotetris.gifquot/gt lt The optional offlineallowed element
indicates if the gt lt application can be launched offline. gt lt It can be launched offline by the
Java Application Cache Viewer gt ltofflineallowed/gt lt shortcut element The optional shortcut
element can be used to gt lt indicate an applications preferences for desktop integration. gt
ltshortcut onlinequotfalsequotgt ltdesktop/gt ltmenu submenuquotSun Laboratory
Applicationsquot/gt lt/shortcutgt lt/informationgt lt Each application is, by default, run in a
restricted execution environment, similar to the Applet sandbox. gt ltsecuritygt lt the
application will have full access to the client machine and local network. gt ltallpermissions/gt
gt
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
lt/securitygt lt The resources element is used to specify all the resources, such as gt lt Java
class files, native libraries, and system properties, gt lt that are part of the application. gt
ltresourcesgt ltjse versionquot..quot javavmargsquotesa Xnoclassgcquot/gt ltjar
hrefquottetris.jarquot/gt ltjar hrefquotlib/derby.jarquot/gt ltjar hrefquotlib/derbyclient.jarquot/gt
ltjar hrefquotlib/derbynet.jarquot/gt ltjar hrefquotlib/derbytools.jarquot/gt lt/resourcesgt lt
indicates that the JNLP file is launching an application gt lt The mainclass attribute can be
omitted if the first JAR file gt lt specified in JNLP file contains a manifest file containing main
class. gt ltapplicationdesc /gt lt/jnlpgt
Pour plus dinformation, notamment pour signer une application
http//java.sun.com/jse/../docs/guide/javaws/index.html
..
Internationalisation IN
Java fournit des classes permettant de pouvoir changer la langue de lapplication. Nous
utilisons tout dabord des fichiers de proprit pour chacune dentre elles langfr.properties fichier
pour la langue franaise langzh.properties fichier pour la langue chinoise lang.properties
fichier pour la langue par dfaut gnralement rserve langlais Dans notre application, nous
devrons appeler la mthode statique suivante
buttonEnglish.setText
java.util.ResourceBundle.getBundlequotlangquot.getStringquotEnglishquot
La langue par dfaut est celle utilise par le systme dexploitation. Cependant, si lon souhaite la
modifier dans notre application nous pouvons utiliser
Locale.setDefaultLocale.FRENCH
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs
Les bases de Swing Interface HommeMachine
/
. Conclusion
Dans ce cours nous avons parcouru les lments essentiels de Swing, afin de pouvoir
concevoir une interface graphique fonctionnelle et ayant le minimum de composant. Nous
approfondirons nos connaissances dans le cours Swing Avanc en abordant des composants
de hautniveau, aussi que certains lments darchitecture. Pour plus dinformations sur certains
composants, nhsitez pas consulter galement le site
http//java.sun.com/docs/books/tutorial/uiswing/index.html qui fournit de nombreuses
explications sur la plupart des composants. Un livre, ayant dj quelques annes mais toujours
dactualit, est disponible ladresse suivante
http//java.sun.com/products/jlf/ed/book/.
http//www.labosun.com Ce document est la proprit de Supinfo et est soumis aux rgles de
droits dauteurs