- Free Documents

January 8, 2018 | Author: Anonymous | Category: Ingénierie, Informatique, Java Programming
Share Embed Donate


Short Description

Download - Free Documents...

Description

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

View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF