Sommario Prefazione Prima di cominciare Capitolo 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 Introduzione Semplice Input/Output con JOptionPane Panoramica dei componenti di Swing Visualizzare testo e immagini in una finestra Campi di testo e gestione degli eventi con le classi innestate Tipi di eventi della GUI e interfacce listener comuni Come funziona la gestione degli eventi JButton Pulsanti che mantengono lo stato JComboBox e uso di una classe interna anonima per la gestione degli eventi JList Liste a selezione multipla Gestione degli eventi del mouse Classi adapter Sottoclasse di JPanel per disegnare con il mouse Gestione degli eventi della tastiera Gestori del layout Usare i pannelli per gestire layout più complessi JTextArea Riepilogo Autovalutazione Risposte Esercizi Capitolo 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Componenti della GUI: prima parte Grafica e Java 2D™ Introduzione Contesti e oggetti grafici Controllo del colore Controllo dei font Disegnare linee, rettangoli e ovali Disegnare archi Disegnare poligoni e spezzate API Java 2D Riepilogo Autovalutazione Risposte Esercizi Deitel_VolII_SOMMARIO.indd VII XIII XXI 1 1 2 5 8 13 20 21 24 27 34 38 41 43 48 52 56 59 69 71 74 75 76 76 79 79 81 82 90 95 100 102 106 113 114 114 115 25/06/2008 13.27.15 VIII Sommario Capitolo 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 Gestione delle eccezioni Introduzione Panoramica sulla gestione delle eccezioni Esempio: divisione per zero senza gestione delle eccezioni Esempio: gestire le ArithmeticException e le InputMismatchException Quando usare la gestione delle eccezioni Gerarchia delle eccezioni di Java Blocco finally Gestione dello Stack printStackTrace, getStackTrace e getMessage Eccezioni concatenate Dichiarare nuovi tipi di eccezioni Precondizioni e postcondizioni Asserzioni Riepilogo Autovalutazione Risposte Esercizi Capitolo 4 File e stream 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Introduzione Gerarchia di dati File e stream La classe File File di testo ad accesso sequenziale Serializzare gli oggetti Classi aggiuntive di java.io Aprire file con JFileChooser Riepilogo Autovalutazione Risposte Esercizi Capitolo 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 119 119 120 121 123 129 129 132 137 139 141 143 144 145 147 147 148 149 151 151 152 154 156 161 177 186 189 192 193 194 195 Strutture dati 199 Introduzione Classi wrapper per i tipi primitivi Autoboxing e auto-unboxing Classi autoreferenzianti Allocazione dinamica della memoria Liste concatenate Stack Code Alberi Riepilogo 199 200 200 201 202 202 213 218 221 227 Deitel_VolII_SOMMARIO.indd VIII 25/06/2008 13.27.28 Sommario Autovalutazione Risposte Esercizi Capitolo 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 237 Introduzione Applet di esempio forniti con il JDK Un semplice applet Java: disegnare una stringa Metodi del ciclo di vita di un applet Inizializzare una variabile di istanza con il metodo init Modello di sicurezza sandbox Risorse web Riepilogo Autovalutazione Risposte Esercizi 237 237 243 248 249 251 252 252 253 253 253 Multimedia: applet e applicazioni Introduzione Caricare, visualizzare e ridimensionare immagini Animare una serie di immagini Mappe di immagini Caricare e riprodurre clip audio Riprodurre video e altri media con Java Media Framework Riepilogo Risorse web Autovalutazione Risposte Esercizi Capitolo 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 228 229 229 Introduzione agli applet Java Capitolo 7 Componenti della GUI: seconda parte Introduzione JSlider Finestre: note aggiuntive Usare i menu con i frame JPopupMenu Pluggable look-and-feel JDesktopPane e JInternalFrame JTabbedPane Gestori del layout: BoxLayout e GridBagLayout Riepilogo Autovalutazione Risposte Esercizi Deitel_VolII_SOMMARIO.indd IX IX 255 255 256 259 265 268 271 277 277 278 279 279 281 281 282 286 287 295 299 303 307 309 323 324 324 325 25/06/2008 13.27.28 X Sommario Capitolo 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 Multithreading Introduzione Stati dei thread: ciclo di vita di un thread Priorità e schedulazione dei thread Creare ed eseguire i thread Sincronizzazione dei thread Relazioni produttore/consumatore senza sincronizzazione Relazione produttore/consumatore: ArrayBlockingQueue Relazione produttore/consumatore con sincronizzazione Relazione produttore/consumatore: buffer con numero finito di elementi Relazione produttore/consumatore: le interfacce Lock e Condition Multithreading e GUI Altre classi e interfacce in java.util.concurrent Riepilogo Autovalutazione Risposte Esercizi Capitolo 10 Accedere alle basi di dati con JDBC 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15 Introduzione Basi di dati relazionali Panoramica sulle basi di dati relazionali: la base di dati books SQL Istruzioni per installare MySQL e MySQL Connector/J Istruzioni per creare un utente MySQL Creare la base di dati books in MySQL Manipolare le basi di dati con JDBC Interfaccia RowSet Java DB/Apache Derby PreparedStatement Stored procedure Le transazioni Riepilogo Risorse web e letture consigliate Autovalutazione Risposte Esercizi Capitolo 11 Applicazioni web: prima parte 11.1 11.2 11.3 11.4 11.5 Introduzione Semplici transazioni HTTP Architettura delle applicazioni multilivello Tecnologie web di Java Creare ed eseguire una semplice applicazione in Java Studio Creator 2 Deitel_VolII_SOMMARIO.indd X 327 327 329 331 333 338 347 355 358 365 373 380 396 397 397 398 399 401 401 402 403 407 416 417 418 419 437 440 442 458 459 460 460 462 463 463 465 465 466 468 469 473 25/06/2008 13.27.29 Sommario 11.6 11.7 11.8 11.9 Componenti JSF Gestione delle sessioni Riepilogo Risorse web Autovalutazione Risposte Esercizi Capitolo 12 Applicazioni web: seconda parte 12.1 12.2 12.3 12.4 12.5 12.6 12.7 490 506 537 537 538 539 539 541 Introduzione Accedere a una base di dati da un’applicazione web Componenti JSF Ajax-enabled AutoComplete Text Field e form virtuali Componente Map Viewer di Google Maps Riepilogo Risorse web Autovalutazione Risposte Esercizi 541 542 555 557 568 580 580 581 582 582 Capitolo 13 Web service JAX-WS, Web 2.0 e mashup 583 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 13.10 Introduzione Nozioni base sui web service in Java Creare, pubblicare, provare e descrivere un web service Usare un web service SOAP Gestione delle sessioni nei web service Usare un web service con una base di dati da un’applicazione web Passare un oggetto di un tipo definito dall’utente a un web service Riepilogo Risorse web Autovalutazione Risposte Esercizi Capitolo 14 Formattazione dell’output 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 Introduzione Stream Formattare l’output usando il metodo printf Stampare numeri interi Stampare numeri in virgola mobile Stampare stringhe e caratteri Stampare date e ore Altri caratteri di conversione Deitel_VolII_SOMMARIO.indd XI XI 583 586 586 598 608 610 627 637 648 649 650 651 651 653 653 653 654 654 656 657 658 661 25/06/2008 13.27.29 XII Sommario 14.9 14.10 14.11 14.12 14.13 14.14 Stampare usando la larghezza e la precisione del campo Usare i flag nella stringa di formato del metodo printf Stampare con gli indici dei parametri Stampare stringhe e sequenze di escape Formattare l’output con la classe Formatter Riepilogo Autovalutazione Risposte Esercizi Appendice A GroupLayout A.1 A.2 A.3 A.4 Introduzione Elementi di base su GroupLayout Creare un ColorChooser Risorse web Appendice B Java Desktop Integration Components (JDIC) B.1 B.2 B.3 B.4 B.5 B.6 663 665 669 670 670 671 672 673 673 675 675 675 676 687 689 Introduzione Splash screen Classe Desktop Tray icon Progetti pilota JDIC Demo JDIC 689 689 691 693 694 694 Appendice C Mashup 695 Indice analitico 703 Deitel_VolII_SOMMARIO.indd XII 25/06/2008 13.27.29