Développez en java

2599
Développons en Java Jean Michel DOUDOUX

description

Apprendre les bases du language java

Transcript of Développez en java

  • 1. Dveloppons en Java Jean Michel DOUDOUX

2. Table des matires Dveloppons en Java.............................................................................................................................................................1 Prambule..............................................................................................................................................................................2 A propos de ce document.........................................................................................................................................2 Remerciements.........................................................................................................................................................4 Notes de licence.......................................................................................................................................................4 Marques dposes....................................................................................................................................................5 Historique des versions............................................................................................................................................5 Partie 1 : Les bases du langage Java...................................................................................................................................8 1. Prsentation de Java.........................................................................................................................................................9 1.1. Les caractristiques...........................................................................................................................................9 1.2. Un bref historique de Java...............................................................................................................................10 1.3. Les diffrentes ditions et versions de Java....................................................................................................11 1.3.1. Les volutions des plates-formes Java..................................................................................................12 1.3.2. Les diffrentes versions de Java............................................................................................................13 1.3.3. Java 1.0..................................................................................................................................................13 1.3.4. Java 1.1..................................................................................................................................................14 1.3.5. Java 1.2 (nom de code Playground)......................................................................................................14 1.3.6. J2SE 1.3 (nom de code Kestrel)............................................................................................................14 1.3.7. J2SE 1.4 (nom de code Merlin)............................................................................................................15 1.3.8. J2SE 5.0 (nom de code Tiger)...............................................................................................................15 1.3.9. Java SE 6 (nom de code Mustang)........................................................................................................16 1.3.9.1. Les volutions de Java 6.............................................................................................................16 1.3.9.2. Java 6 update...............................................................................................................................19 1.3.10. Java SE 7.............................................................................................................................................27 1.3.10.1. Les JSR de Java 7.....................................................................................................................29 1.3.10.2. Java 7 update.............................................................................................................................30 1.3.11. Les futures versions de Java................................................................................................................32 1.3.12. Le rsum des diffrentes versions.....................................................................................................33 1.3.13. Le support des diffrentes versions.....................................................................................................33 1.3.14. Les extensions du JDK........................................................................................................................33 1.4. Un rapide tour d'horizon des API et de quelques outils..................................................................................34 1.5. Les diffrences entre Java et JavaScript..........................................................................................................35 1.6. L'installation du JDK.......................................................................................................................................36 1.6.1. L'installation de la version 1.3 du JDK de Sun sous Windows 9x........................................................36 1.6.2. L'installation de la documentation de Java 1.3 sous Windows.............................................................38 1.6.3. La configuration des variables systme sous Windows 9x...................................................................39 1.6.4. Les lments du JDK 1.3 sous Windows..............................................................................................40 1.6.5. L'installation de la version 1.4.2 du JDK de Sun sous Windows..........................................................40 1.6.6. L'installation de la version 1.5 du JDK de Sun sous Windows.............................................................41 1.6.7. Installation JDK 1.4.2 sous Linux Mandrake 10..................................................................................42 2. Les notions et techniques de base en Java....................................................................................................................46 2.1. Les concepts de base.......................................................................................................................................46 2.1.1. La compilation et l'excution................................................................................................................46 2.1.2. Les packages.........................................................................................................................................49 2.1.3. Le dploiement sous la forme d'un jar..................................................................................................51 2.1.4. Le classpath...........................................................................................................................................52 2.1.4.1. La dfinition du classpath pour excuter une application...........................................................54 2.1.4.2. La dfinition du classpath pour excuter une application avec la variable CLASSPATH.........56 2.1.4.3. La dfinition du classpath pour excuter une application utilisant une ou plusieurs bibliothques.............................................................................................................................56 2.1.4.4. La dfinition du classpath pour excuter une application package en jar.................................57 2.2. L'excution d'une applet..................................................................................................................................59 Dveloppons en Java 3. Table des matires 3. La syntaxe et les lments de bases de Java.................................................................................................................60 3.1. Les rgles de base............................................................................................................................................60 3.2. Les identificateurs...........................................................................................................................................61 3.3. Les commentaires............................................................................................................................................61 3.4. La dclaration et l'utilisation de variables.......................................................................................................61 3.4.1. La dclaration de variables...................................................................................................................61 3.4.2. Les types lmentaires..........................................................................................................................62 3.4.3. Le format des types lmentaires..........................................................................................................63 3.4.4. L'initialisation des variables..................................................................................................................64 3.4.5. L'affectation..........................................................................................................................................64 3.4.6. Les comparaisons..................................................................................................................................65 3.5. Les oprations arithmtiques...........................................................................................................................65 3.5.1. L'arithmtique entire...........................................................................................................................66 3.5.2. L'arithmtique en virgule flottante........................................................................................................66 3.5.3. L'incrmentation et la dcrmentation..................................................................................................67 3.6. La priorit des oprateurs................................................................................................................................67 3.7. Les structures de contrles..............................................................................................................................68 3.7.1. Les boucles............................................................................................................................................68 3.7.2. Les branchements conditionnels...........................................................................................................70 3.7.3. Les dbranchements..............................................................................................................................70 3.8. Les tableaux.....................................................................................................................................................70 3.8.1. La dclaration des tableaux...................................................................................................................71 3.8.2. L'initialisation explicite d'un tableau....................................................................................................71 3.8.3. Le parcours d'un tableau.......................................................................................................................72 3.9. Les conversions de types.................................................................................................................................72 3.9.1. La conversion d'un entier int en chane de caractre String..................................................................73 3.9.2. La conversion d'une chane de caractres String en entier int..............................................................73 3.9.3. La conversion d'un entier int en entier long..........................................................................................73 3.10. La manipulation des chanes de caractres...................................................................................................73 3.10.1. Les caractres spciaux dans les chaines............................................................................................74 3.10.2. L'addition de chanes de caractres.....................................................................................................74 3.10.3. La comparaison de deux chaines........................................................................................................75 3.10.4. La dtermination de la longueur d'une chaine....................................................................................75 3.10.5. La modification de la casse d'une chaine............................................................................................75 4. La programmation oriente objet.................................................................................................................................76 4.1. Le concept de classe........................................................................................................................................76 4.1.1. La syntaxe de dclaration d'une classe..................................................................................................77 4.2. Les objets.........................................................................................................................................................77 4.2.1. La cration d'un objet : instancier une classe........................................................................................77 4.2.2. La dure de vie d'un objet.....................................................................................................................79 4.2.3. La cration d'objets identiques..............................................................................................................79 4.2.4. Les rfrences et la comparaison d'objets.............................................................................................79 4.2.5. L'objet null............................................................................................................................................80 4.2.6. Les variables de classes.........................................................................................................................80 4.2.7. La variable this......................................................................................................................................80 4.2.8. L'oprateur instanceof...........................................................................................................................81 4.3. Les modificateurs d'accs................................................................................................................................81 4.3.1. Les mots cls qui grent la visibilit des entits...................................................................................82 4.3.2. Le mot cl static....................................................................................................................................82 4.3.3. Le mot cl final.....................................................................................................................................83 4.3.4. Le mot cl abstract................................................................................................................................84 4.3.5. Le mot cl synchronized.......................................................................................................................84 4.3.6. Le mot cl volatile.................................................................................................................................84 4.3.7. Le mot cl native...................................................................................................................................85 4.4. Les proprits ou attributs...............................................................................................................................85 4.4.1. Les variables d'instances.......................................................................................................................85 4.4.2. Les variables de classes.........................................................................................................................85 4.4.3. Les constantes.......................................................................................................................................85 Dveloppons en Java 4. Table des matires 4. La programmation oriente objet 4.5. Les mthodes...................................................................................................................................................85 4.5.1. La syntaxe de la dclaration..................................................................................................................86 4.5.2. La transmission de paramtres..............................................................................................................87 4.5.3. L'mission de messages........................................................................................................................87 4.5.4. L'enchainement de rfrences des variables et des mthodes.........................................................88 4.5.5. La surcharge de mthodes.....................................................................................................................88 4.5.6. Les constructeurs...................................................................................................................................89 4.5.7. Le destructeur........................................................................................................................................89 4.5.8. Les accesseurs.......................................................................................................................................90 4.6. L'hritage.........................................................................................................................................................90 4.6.1. Le principe de l'hritage........................................................................................................................90 4.6.2. La mise en oeuvre de l'hritage.............................................................................................................91 4.6.3. L'accs aux proprits hrites..............................................................................................................91 4.6.4. La redfinition d'une mthode hrite...................................................................................................91 4.6.5. Le polymorphisme................................................................................................................................91 4.6.6. Le transtypage induit par l'hritage facilite le polymorphisme.............................................................91 4.6.7. Les interfaces et l'hritage multiple......................................................................................................92 4.6.8. Des conseils sur l'hritage.....................................................................................................................93 4.7. Les packages...................................................................................................................................................94 4.7.1. La dfinition d'un package....................................................................................................................94 4.7.2. L'utilisation d'un package......................................................................................................................94 4.7.3. La collision de classes...........................................................................................................................95 4.7.4. Les packages et l'environnement systme.............................................................................................95 4.8. Les classes internes.........................................................................................................................................95 4.8.1. Les classes internes non statiques.........................................................................................................97 4.8.2. Les classes internes locales.................................................................................................................101 4.8.3. Les classes internes anonymes............................................................................................................104 4.8.4. Les classes internes statiques..............................................................................................................104 4.9. La gestion dynamique des objets..................................................................................................................106 5. Les packages de bases...................................................................................................................................................107 5.1. Les packages selon la version du JDK..........................................................................................................107 5.2. Le package java.lang.....................................................................................................................................113 5.2.1. La classe Object..................................................................................................................................114 5.2.1.1. La mthode getClass()..............................................................................................................114 5.2.1.2. La mthode toString()...............................................................................................................114 5.2.1.3. La mthode equals()..................................................................................................................114 5.2.1.4. La mthode finalize()................................................................................................................114 5.2.1.5. La mthode clone()...................................................................................................................115 5.2.2. La classe String...................................................................................................................................115 5.2.3. La classe StringBuffer.........................................................................................................................117 5.2.4. Les wrappers.......................................................................................................................................118 5.2.5. La classe System.................................................................................................................................119 5.2.5.1. L'utilisation des flux d'entre/sortie standard............................................................................119 5.2.5.2. Les variables d'environnement et les proprits du systme....................................................121 5.2.6. Les classes Runtime et Process...........................................................................................................123 5.3. La prsentation rapide du package awt java..................................................................................................126 5.4. La prsentation rapide du package java.io....................................................................................................126 5.5. Le package java.util.......................................................................................................................................126 5.5.1. La classe StringTokenizer...................................................................................................................126 5.5.2. La classe Random...............................................................................................................................127 5.5.3. Les classes Date et Calendar...............................................................................................................127 5.5.4. La classe SimpleDateFormat..............................................................................................................128 5.5.5. La classe Vector..................................................................................................................................129 5.5.6. La classe Hashtable.............................................................................................................................130 5.5.7. L'interface Enumeration......................................................................................................................130 5.5.8. La manipulation d'archives zip...........................................................................................................131 5.5.9. Les expressions rgulires..................................................................................................................134 Dveloppons en Java 5. Table des matires 5. Les packages de bases 5.5.9.1. Les motifs.................................................................................................................................134 5.5.9.2. La classe Pattern.......................................................................................................................136 5.5.9.3. La classe Matcher.....................................................................................................................137 5.5.10. La classe Formatter...........................................................................................................................139 5.5.11. La classe Scanner..............................................................................................................................139 5.6. La prsentation rapide du package java.net..................................................................................................140 5.7. La prsentation rapide du package java.applet..............................................................................................140 6. Les fonctions mathmatiques.......................................................................................................................................141 6.1. Les variables de classe..................................................................................................................................141 6.2. Les fonctions trigonomtriques.....................................................................................................................141 6.3. Les fonctions de comparaisons.....................................................................................................................142 6.4. Les arrondis...................................................................................................................................................142 6.4.1. La mthode round(n)...........................................................................................................................142 6.4.2. La mthode rint(double)......................................................................................................................143 6.4.3. La mthode floor(double)...................................................................................................................143 6.4.4. La mthode ceil(double).....................................................................................................................143 6.4.5. La mthode abs(x)...............................................................................................................................144 6.5. La mthode IEEEremainder(double, double)................................................................................................144 6.6. Les Exponentielles et puissances..................................................................................................................144 6.6.1. La mthode pow(double, double).......................................................................................................144 6.6.2. La mthode sqrt(double).....................................................................................................................145 6.6.3. La mthode exp(double).....................................................................................................................145 6.6.4. La mthode log(double)......................................................................................................................145 6.7. La gnration de nombres alatoires.............................................................................................................145 6.8. La classe BigDecimal....................................................................................................................................146 7. La gestion des exceptions.............................................................................................................................................152 7.1. Les mots cls try, catch et finally..................................................................................................................153 7.2. La classe Throwable......................................................................................................................................154 7.3. Les classes Exception, RunTimeException et Error.....................................................................................155 7.4. Les exceptions personnalises.......................................................................................................................155 7.5. Les exceptions chanes................................................................................................................................156 7.6. L'utilisation des exceptions...........................................................................................................................157 8. Le multitche.................................................................................................................................................................159 8.1. L'interface Runnable.....................................................................................................................................159 8.2. La classe Thread............................................................................................................................................160 8.3. La cration et l'excution d'un thread............................................................................................................162 8.3.1. La drivation de la classe Thread........................................................................................................162 8.3.2. L'implmentation de l'interface Runnable..........................................................................................163 8.3.3. La modification de la priorit d'un thread...........................................................................................164 8.4. La classe ThreadGroup..................................................................................................................................165 8.5. Un thread en tche de fond (dmon).............................................................................................................165 8.6. L'exclusion mutuelle.....................................................................................................................................166 8.6.1. La scurisation d'une mthode............................................................................................................166 8.6.2. La scurisation d'un bloc.....................................................................................................................166 8.6.3. La scurisation de variables de classes...............................................................................................167 8.6.4. La synchronisation : les mthodes wait() et notify()...........................................................................167 9. JDK 1.5 (nom de code Tiger).......................................................................................................................................168 9.1. Les nouveauts du langage Java version 1.5.................................................................................................168 9.2. L'autoboxing / unboxing................................................................................................................................169 9.3. Les importations statiques.............................................................................................................................169 9.4. Les annotations ou mtadonnes (Meta Data)..............................................................................................170 9.5. Les arguments variables (varargs).................................................................................................................170 9.6. Les generics...................................................................................................................................................172 9.7. Les boucles pour le parcours des collections................................................................................................175 Dveloppons en Java 6. Table des matires 9. JDK 1.5 (nom de code Tiger) 9.8. Les numrations (type enum)......................................................................................................................177 9.8.1. La dfinition d'une numration.........................................................................................................178 9.8.2. L'utilisation d'une numration...........................................................................................................179 9.8.3. L'enrichissement de l'numration......................................................................................................180 9.8.4. La personnalisation de chaque lment..............................................................................................183 9.8.5. Les limitations dans la mise en oeuvre des numrations..................................................................185 10. Les annotations...........................................................................................................................................................186 10.1. La prsentation des annotations..................................................................................................................186 10.2. La mise en oeuvre des annotations..............................................................................................................187 10.3. L'utilisation des annotations........................................................................................................................188 10.3.1. La documentation..............................................................................................................................189 10.3.2. L'utilisation par le compilateur.........................................................................................................189 10.3.3. La gnration de code.......................................................................................................................189 10.3.4. La gnration de fichiers...................................................................................................................189 10.3.5. Les API qui utilisent les annotations.................................................................................................189 10.4. Les annotations standards............................................................................................................................190 10.4.1. L'annotation @Deprecated................................................................................................................190 10.4.2. L'annotation @Override....................................................................................................................191 10.4.3. L'annotation @SuppressWarning......................................................................................................192 10.5. Les annotations communes (Common Annotations)..................................................................................193 10.5.1. L'annotation @Generated..................................................................................................................194 10.5.2. Les annotations @Resource et @Resources.....................................................................................194 10.5.3. Les annotations @PostConstruct et @PreDestroy............................................................................195 10.6. Les annotations personnalises...................................................................................................................195 10.6.1. La dfinition d'une annotation...........................................................................................................195 10.6.2. Les annotations pour les annotations................................................................................................197 10.6.2.1. L'annotation @Target.............................................................................................................197 10.6.2.2. L'annotation @Retention........................................................................................................198 10.6.2.3. L'annotation @Documented...................................................................................................198 10.6.2.4. L'annotation @Inherited.........................................................................................................199 10.7. L'exploitation des annotations.....................................................................................................................199 10.7.1. L'exploitation des annotations dans un Doclet..................................................................................199 10.7.2. L'exploitation des annotations avec l'outil Apt.................................................................................200 10.7.3. L'exploitation des annotations par introspection...............................................................................206 10.7.4. L'exploitation des annotations par le compilateur Java....................................................................208 10.8. L'API Pluggable Annotation Processing.....................................................................................................208 10.8.1. Les processeurs d'annotations...........................................................................................................209 10.8.2. L'utilisation des processeurs par le compilateur...............................................................................211 10.8.3. La cration de nouveaux fichiers......................................................................................................211 10.9. Les ressources relatives aux annotations.....................................................................................................213 11. Java SE 7, le projet Coin............................................................................................................................................214 11.1. Les entiers exprims en binaire (Binary Literals).......................................................................................215 11.2. Utilisation des underscores dans les entiers littraux..................................................................................215 11.3. Utilisation des strings dans l'instruction switch..........................................................................................216 11.4. L'oprateur diamant.....................................................................................................................................217 11.5. L'instruction try-with-resources..................................................................................................................219 11.6. Des types plus prcis lorsqu'une exception est releve dans une clause catch...........................................227 11.7. Multiples exceptions dans une clause catch................................................................................................230 Partie 2 : Dveloppement des interfaces graphiques.....................................................................................................233 12. Le graphisme...............................................................................................................................................................234 12.1. Les oprations sur le contexte graphique....................................................................................................234 12.1.1. Le trac de formes gomtriques......................................................................................................234 12.1.2. Le trac de texte................................................................................................................................235 12.1.3. L'utilisation des fontes......................................................................................................................235 Dveloppons en Java 7. Table des matires 12. Le graphisme 12.1.4. La gestion de la couleur....................................................................................................................236 12.1.5. Le chevauchement de figures graphiques.........................................................................................236 12.1.6. L'effacement d'une aire.....................................................................................................................236 12.1.7. La copie d'une aire rectangulaire......................................................................................................236 13. Les lments d'interfaces graphiques de l'AWT......................................................................................................237 13.1. Les composants graphiques.........................................................................................................................238 13.1.1. Les tiquettes.....................................................................................................................................238 13.1.2. Les boutons.......................................................................................................................................239 13.1.3. Les panneaux.....................................................................................................................................239 13.1.4. Les listes droulantes (combobox)....................................................................................................239 13.1.5. La classe TextComponent.................................................................................................................241 13.1.6. Les champs de texte..........................................................................................................................241 13.1.7. Les zones de texte multilignes..........................................................................................................242 13.1.8. Les listes............................................................................................................................................244 13.1.9. Les cases cocher.............................................................................................................................247 13.1.10. Les boutons radio............................................................................................................................248 13.1.11. Les barres de dfilement.................................................................................................................248 13.1.12. La classe Canvas.............................................................................................................................250 13.2. La classe Component..................................................................................................................................250 13.3. Les conteneurs.............................................................................................................................................252 13.3.1. Le conteneur Panel............................................................................................................................253 13.3.2. Le conteneur Window.......................................................................................................................253 13.3.3. Le conteneur Frame..........................................................................................................................253 13.3.4. Le conteneur Dialog..........................................................................................................................255 13.4. Les menus....................................................................................................................................................255 13.4.1. Les mthodes de la classe MenuBar.................................................................................................257 13.4.2. Les mthodes de la classe Menu.......................................................................................................258 13.4.3. Les mthodes de la classe MenuItem................................................................................................258 13.4.4. Les mthodes de la classe CheckboxMenuItem...............................................................................258 13.5. La classe java.awt.Desktop.........................................................................................................................258 14. La cration d'interfaces graphiques avec AWT......................................................................................................260 14.1. Le dimensionnement des composants.........................................................................................................260 14.2. Le positionnement des composants.............................................................................................................261 14.2.1. La mise en page par flot (FlowLayout).............................................................................................262 14.2.2. La mise en page bordure (BorderLayout).........................................................................................263 14.2.3. La mise en page de type carte (CardLayout)....................................................................................264 14.2.4. La mise en page GridLayout.............................................................................................................265 14.2.5. La mise en page GridBagLayout......................................................................................................266 14.3. La cration de nouveaux composants partir de Panel..............................................................................268 14.4. L'activation ou la dsactivation des composants.........................................................................................268 15. L'interception des actions de l'utilisateur.................................................................................................................270 15.1. L'interception des actions de l'utilisateur avec Java version 1.0.................................................................270 15.2. L'interception des actions de l'utilisateur avec Java version 1.1.................................................................270 15.2.1. L'interface ItemListener....................................................................................................................272 15.2.2. L'interface TextListener....................................................................................................................273 15.2.3. L'interface MouseMotionListener.....................................................................................................274 15.2.4. L'interface MouseListener.................................................................................................................274 15.2.5. L'interface WindowListener..............................................................................................................275 15.2.6. Les diffrentes implmentations des Listeners.................................................................................276 15.2.6.1. Une classe implmentant elle mme le listener......................................................................276 15.2.6.2. Une classe indpendante implmentant le listener.................................................................277 15.2.6.3. Une classe interne...................................................................................................................278 15.2.6.4. Une classe interne anonyme....................................................................................................278 15.2.7. Rsum..............................................................................................................................................279 Dveloppons en Java 8. Table des matires 16. Le dveloppement d'interfaces graphiques avec SWING.......................................................................................280 16.1. La prsentation de Swing............................................................................................................................280 16.2. Les packages Swing....................................................................................................................................281 16.3. Un exemple de fentre autonome................................................................................................................281 16.4. Les composants Swing................................................................................................................................282 16.4.1. La classe JFrame...............................................................................................................................283 16.4.1.1. Le comportement par dfaut la fermeture............................................................................285 16.4.1.2. La personnalisation de l'icne.................................................................................................286 16.4.1.3. Centrer une JFrame l'cran...................................................................................................286 16.4.1.4. Les vnements associes un JFrame..................................................................................287 16.4.2. Les tiquettes : la classe JLabel........................................................................................................287 16.4.3. Les panneaux : la classe JPanel.........................................................................................................290 16.5. Les boutons.................................................................................................................................................290 16.5.1. La classe AbstractButton..................................................................................................................290 16.5.2. La classe JButton..............................................................................................................................292 16.5.3. La classe JToggleButton...................................................................................................................293 16.5.4. La classe ButtonGroup......................................................................................................................293 16.5.5. Les cases cocher : la classe JCheckBox.........................................................................................294 16.5.6. Les boutons radio : la classe JRadioButton......................................................................................295 16.6. Les composants de saisie de texte...............................................................................................................299 16.6.1. La classe JTextComponent...............................................................................................................299 16.6.2. La classe JTextField..........................................................................................................................300 16.6.3. La classe JPasswordField..................................................................................................................301 16.6.4. La classe JFormattedTextField.........................................................................................................302 16.6.5. La classe JEditorPane........................................................................................................................302 16.6.6. La classe JTextPane..........................................................................................................................303 16.6.7. La classe JTextArea..........................................................................................................................303 16.7. Les onglets...................................................................................................................................................305 16.8. Le composant JTree....................................................................................................................................306 16.8.1. La cration d'une instance de la classe JTree....................................................................................306 16.8.2. La gestion des donnes de l'arbre......................................................................................................309 16.8.2.1. L'interface TreeNode..............................................................................................................310 16.8.2.2. L'interface MutableTreeNode.................................................................................................311 16.8.2.3. La classe DefaultMutableTreeNode.......................................................................................311 16.8.3. La modification du contenu de l'arbre...............................................................................................312 16.8.3.1. Les modifications des noeuds fils...........................................................................................312 16.8.3.2. Les vnements mis par le modle........................................................................................313 16.8.3.3. L'dition d'un noeud................................................................................................................314 16.8.3.4. Les diteurs personnaliss.......................................................................................................315 16.8.3.5. La dfinition des noeuds ditables..........................................................................................315 16.8.4. La mise en oeuvre d'actions sur l'arbre.............................................................................................316 16.8.4.1. Etendre ou refermer un noeud.................................................................................................316 16.8.4.2. La dtermination du noeud slectionn..................................................................................317 16.8.4.3. Le parcours des noeuds de l'arbre...........................................................................................317 16.8.5. La gestion des vnements................................................................................................................318 16.8.5.1. La classe TreePath..................................................................................................................319 16.8.5.2. La gestion de la slection d'un noeud.....................................................................................320 16.8.5.3. Les vnements lies la slection de noeuds.........................................................................321 16.8.5.4. Les vnements lorsqu'un noeud est tendu ou referm.........................................................323 16.8.5.5. Le contrle des actions pour tendre ou refermer un noeud...................................................324 16.8.6. La personnalisation du rendu............................................................................................................324 16.8.6.1. Personnaliser le rendu des noeuds..........................................................................................325 16.8.6.2. Les bulles d'aides (Tooltips)...................................................................................................328 16.9. Les menus....................................................................................................................................................328 16.9.1. La classe JMenuBar..........................................................................................................................331 16.9.2. La classe JMenuItem.........................................................................................................................333 16.9.3. La classe JPopupMenu......................................................................................................................333 16.9.4. La classe JMenu................................................................................................................................335 16.9.5. La classe JCheckBoxMenuItem........................................................................................................336 Dveloppons en Java 9. Table des matires 16. Le dveloppement d'interfaces graphiques avec SWING 16.9.6. La classe JRadioButtonMenuItem....................................................................................................336 16.9.7. La classe JSeparator..........................................................................................................................336 16.10. L'affichage d'une image dans une application...........................................................................................337 17. Le dveloppement d'interfaces graphiques avec SWT............................................................................................342 17.1. La prsentation de SWT..............................................................................................................................342 17.2. Un exemple trs simple...............................................................................................................................344 17.3. La classe SWT.............................................................................................................................................345 17.4. L'objet Display............................................................................................................................................345 17.5. L'objet Shell.................................................................................................................................................345 17.6. Les composants...........................................................................................................................................347 17.6.1. La classe Control...............................................................................................................................347 17.6.2. Les contrles de base........................................................................................................................347 17.6.2.1. La classe Button......................................................................................................................348 17.6.2.2. La classe Label........................................................................................................................348 17.6.2.3. La classe Text.........................................................................................................................349 17.6.3. Les contrles de type liste.................................................................................................................350 17.6.3.1. La classe Combo.....................................................................................................................350 17.6.3.2. La classe List...........................................................................................................................351 17.6.4. Les contrles pour les menus............................................................................................................351 17.6.4.1. La classe Menu.......................................................................................................................351 17.6.4.2. La classe MenuItem................................................................................................................352 17.6.5. Les contrles de slection ou d'affichage d'une valeur.....................................................................353 17.6.5.1. La classe ProgressBar.............................................................................................................353 17.6.5.2. La classe Scale........................................................................................................................354 17.6.5.3. La classe Slider.......................................................................................................................354 17.6.6. Les contrles de type onglets ......................................................................................................355 17.6.6.1. La classe TabFolder................................................................................................................355 17.6.6.2. La classe TabItem...................................................................................................................356 17.6.7. Les contrles de type tableau ......................................................................................................356 17.6.7.1. La classe Table........................................................................................................................356 17.6.7.2. La classe TableColumn...........................................................................................................358 17.6.7.3. La classe TableItem................................................................................................................358 17.6.8. Les contrles de type arbre .........................................................................................................359 17.6.8.1. La classe Tree.........................................................................................................................359 17.6.8.2. La classe TreeItem..................................................................................................................360 17.6.9. La classe ScrollBar............................................................................................................................360 17.6.10. Les contrles pour le graphisme.....................................................................................................360 17.6.10.1. La classe Canvas...................................................................................................................360 17.6.10.2. La classe GC.........................................................................................................................361 17.6.10.3. La classe Color......................................................................................................................362 17.6.10.4. La classe Font.......................................................................................................................362 17.6.10.5. La classe Image.....................................................................................................................363 17.7. Les conteneurs.............................................................................................................................................364 17.7.1. Les conteneurs de base......................................................................................................................364 17.7.1.1. La classe Composite...............................................................................................................364 17.7.1.2. La classe Group.......................................................................................................................366 17.7.2. Les contrles de type barre d'outils .............................................................................................366 17.7.2.1. La classe ToolBar...................................................................................................................366 17.7.2.2. La classe ToolItem..................................................................................................................367 17.7.2.3. Les classes CoolBar et Cooltem.............................................................................................369 17.8. La gestion des erreurs..................................................................................................................................370 17.9. Le positionnement des contrles.................................................................................................................370 17.9.1. Le positionnement absolu.................................................................................................................371 17.9.2. Le positionnement relatif avec les LayoutManager..........................................................................371 17.9.2.1. FillLayout................................................................................................................................371 17.9.2.2. RowLayout..............................................................................................................................372 17.9.2.3. GridLayout..............................................................................................................................373 Dveloppons en Java 10. Table des matires 17. Le dveloppement d'interfaces graphiques avec SWT 17.9.2.4. FormLayout............................................................................................................................376 17.10. La gestion des vnements........................................................................................................................376 17.10.1. L'interface KeyListener...................................................................................................................377 17.10.2. L'interface MouseListener...............................................................................................................379 17.10.3. L'interface MouseMoveListener.....................................................................................................380 17.10.4. L'interface MouseTrackListener.....................................................................................................381 17.10.5. L'interface ModifyListener.............................................................................................................381 17.10.6. L'interface VerifyText()..................................................................................................................382 17.10.7. L'interface FocusListener................................................................................................................383 17.10.8. L'interface TraverseListener...........................................................................................................383 17.10.9. L'interface PaintListener.................................................................................................................384 17.11. Les botes de dialogue...............................................................................................................................385 17.11.1. Les botes de dialogue prdfinies..................................................................................................386 17.11.1.1. La classe MessageBox..........................................................................................................386 17.11.1.2. La classe ColorDialog...........................................................................................................387 17.11.1.3. La classe FontDialog.............................................................................................................387 17.11.1.4. La classe FileDialog..............................................................................................................388 17.11.1.5. La classe DirectoryDialog.....................................................................................................389 17.11.1.6. La classe PrintDialog............................................................................................................390 17.11.2. Les boites de dialogue personnalises............................................................................................391 18. JFace............................................................................................................................................................................393 18.1. La prsentation de JFace.............................................................................................................................393 18.2. La structure gnrale d'une application.......................................................................................................394 18.3. Les boites de dialogue.................................................................................................................................395 18.3.1. L'affichage des messages d'erreur.....................................................................................................395 18.3.2. L'affichage des messages d'information l'utilisateur......................................................................396 18.3.3. La saisie d'une valeur par l'utilisateur...............................................................................................398 18.3.4. La bote de dialogue pour afficher la progression d'un traitement....................................................399 Partie 3 : Les API avances..............................................................................................................................................403 19. Les collections..............................................................................................................................................................405 19.1. Prsentation du framework collection.........................................................................................................405 19.2. Les interfaces des collections......................................................................................................................406 19.2.1. L'interface Collection........................................................................................................................407 19.2.2. L'interface Iterator.............................................................................................................................408 19.3. Les listes......................................................................................................................................................409 19.3.1. L'interface List..................................................................................................................................409 19.3.2. Les listes chanes : la classe LinkedList..........................................................................................410 19.3.3. L'interface ListIterator.......................................................................................................................411 19.3.4. Les tableaux redimensionnables : la classe ArrayList......................................................................411 19.4. Les ensembles.............................................................................................................................................412 19.4.1. L'interface Set...................................................................................................................................412 19.4.2. L'interface SortedSet.........................................................................................................................412 19.4.3. La classe HashSet..............................................................................................................................413 19.4.4. La classe TreeSet..............................................................................................................................413 19.5. Les collections gres sous la forme cl/valeur..........................................................................................414 19.5.1. L'interface Map.................................................................................................................................414 19.5.2. L'interface SortedMap.......................................................................................................................415 19.5.3. La classe Hashtable...........................................................................................................................415 19.5.4. La classe TreeMap............................................................................................................................416 19.5.5. La classe HashMap...........................................................................................................................416 19.6. Le tri des collections...................................................................................................................................417 19.6.1. L'interface Comparable.....................................................................................................................417 19.6.2. L'interface Comparator.....................................................................................................................417 19.7. Les algorithmes...........................................................................................................................................417 19.8. Les exceptions du framework.....................................................................................................................419 Dveloppons en Java 11. Table des matires 20. Les flux.........................................................................................................................................................................420 20.1. La prsentation des flux..............................................................................................................................420 20.2. Les classes de gestion des flux....................................................................................................................420 20.3. Les flux de caractres..................................................................................................................................422 20.3.1. La classe Reader................................................................................................................................423 20.3.2. La classe Writer................................................................................................................................424 20.3.3. Les flux de caractres avec un fichier...............................................................................................424 20.3.3.1. Les flux de caractres en lecture sur un fichier.......................................................................424 20.3.3.2. Les flux de caractres en criture sur un fichier.....................................................................425 20.3.4. Les flux de caractres tamponns avec un fichier.............................................................................425 20.3.4.1. Les flux de caractres tamponns en lecture avec un fichier..................................................425 20.3.4.2. Les flux de caractres tamponns en criture avec un fichier................................................426 20.3.4.3. La classe PrintWriter...............................................................................................................427 20.4. Les flux d'octets...........................................................................................................................................429 20.4.1. Les flux d'octets avec un fichier........................................................................................................429 20.4.1.1. Les flux d'octets en lecture sur un fichier...............................................................................430 20.4.1.2. Les flux d'octets en criture sur un fichier..............................................................................430 20.4.2. Les flux d'octets tamponns avec un fichier.....................................................................................432 20.5. La classe File...............................................................................................................................................432 20.6. Les fichiers accs direct............................................................................................................................434 20.7. La classe java.io.Console............................................................................................................................436 21. NIO 2............................................................................................................................................................................437 21.1. Les entres/sorties avec Java.......................................................................................................................438 21.2. Les principales classes et interfaces............................................................................................................438 21.3. L'interface Path............................................................................................................................................439 21.3.1. L'obtention d'une instance de type Path............................................................................................440 21.3.2. L'obtention d'lments du chemin.....................................................................................................440 21.3.3. La manipulation d'un chemin............................................................................................................442 21.3.4. La comparaison de chemins..............................................................................................................443 21.3.5. La conversion d'un chemin...............................................................................................................444 21.4. Glob.............................................................................................................................................................445 21.5. La classe Files.............................................................................................................................................447 21.5.1. Les vrifications sur un fichier ou un rpertoire...............................................................................447 21.5.2. La cration d'un fichier ou d'un rpertoire........................................................................................449 21.5.3. La copie d'un fichier ou d'un rpertoire............................................................................................451 21.5.4. Le dplacement d'un fichier ou d'un rpertoire.................................................................................453 21.5.5. La suppression d'un fichier ou d'un rpertoire..................................................................................455 21.5.6. L'obtention du type de fichier...........................................................................................................456 21.6. Le parcourt du contenu de rpertoires.........................................................................................................457 21.6.1. Le parcourt d'un rpertoire................................................................................................................457 21.6.2. Le parcourt d'une hirarchie de rpertoires.......................................................................................460 21.6.3. Les oprations rcursives..................................................................................................................462 21.7. L'utilisation de systmes de gestion de fichiers..........................................................................................463 21.7.1. La classe FileSystems.......................................................................................................................463 21.7.2. La classe FileSystem.........................................................................................................................464 21.7.3. La cration d'une implmentation de FileSystem.............................................................................464 21.7.4. Une implmentation de FileSystem pour les fichiers Zip.................................................................465 21.8. La lecture et l'criture dans un fichier.........................................................................................................466 21.8.1. Les options d'ouverture d'un fichier..................................................................................................467 21.8.2. La lecture et l'criture de l'intgralit d'un fichier.............................................................................468 21.8.3. La lecture et l'criture buffrise d'un fichier....................................................................................469 21.8.4. La lecture et l'criture d'un flux d'octets...........................................................................................470 21.8.5. La lecture et l'criture d'un fichier avec un channel..........................................................................471 21.9. Les liens et les liens symboliques...............................................................................................................472 21.9.1. La cration d'un lien physique..........................................................................................................473 21.9.2. La cration d'un lien symbolique......................................................................................................473 21.9.3. L'utilisation des liens et des liens symboliques.................................................................................474 21.10. La gestion des attributs..............................................................................................................................474 Dveloppons en Java 12. Table des matires 21. NIO 2 21.10.1. La gestion individuelle des attributs...............................................................................................474 21.10.2. La gestion de plusieurs attributs......................................................................................................475 21.10.3. L'utilisation des vues.......................................................................................................................477 21.10.4. La gestion des permissions DOS....................................................................................................478 21.10.5. La gestion des permissions Posix....................................................................................................479 21.11. La gestion des units de stockages............................................................................................................481 21.12. Les notifications de changements dans un rpertoire................................................................................482 21.12.1. La surveillance d'un rpertoire........................................................................................................482 21.12.2. L'obtention des vnements............................................................................................................484 21.12.3. Le traitement des vnements.........................................................................................................485 21.12.4. Un exemple complet.......................................................................................................................486 21.12.5. L'utilisation et les limites de l'API WatchService...........................................................................488 21.13. La gestion des erreurs et la libration des ressources................................................................................488 21.14. L'interoprabilit avec le code existant.....................................................................................................490 21.14.1. L'quivalence des fonctionnalits entre java.io et NIO2.................................................................491 22. La srialisation............................................................................................................................................................493 22.1. Les classes et les interfaces de la srialisation............................................................................................493 22.1.1. L'interface Serializable......................................................................................................................493 22.1.2. La classe ObjectOuputStream...........................................................................................................494 22.1.3. La classe ObjectInputStream............................................................................................................495 22.2. Le mot cl transient.....................................................................................................................................496 22.3. La srialisation personnalise......................................................................................................................497 22.3.1. L'interface Externalizable.................................................................................................................497 23. L'interaction avec le rseau.......................................................................................................................................498 23.1. L'introduction aux concepts lis au rseau..................................................................................................498 23.2. Les adresses internet....................................................................................................................................499 23.2.1. La classe InetAddress........................................................................................................................499 23.3. L'accs aux ressources avec une URL.........................................................................................................500 23.3.1. La classe URL...................................................................................................................................501 23.3.2. La classe URLConnection................................................................................................................501 23.3.3. La classe URLEncoder......................................................................................................................502 23.3.4. La classe HttpURLConnection.........................................................................................................503 23.4. L'utilisation du protocole TCP....................................................................................................................504 23.4.1. La classe SocketServer......................................................................................................................504 23.4.2. La classe Socket................................................................................................................................506 23.5. L'utilisation du protocole UDP....................................................................................................................507 23.5.1. La classe DatagramSocket................................................................................................................507 23.5.2. La classe DatagramP