MokaByte Numero
31 - Giugno 1999
|
|||
|
|
la pratica |
|
|
Massimo Carli |
|
|
Dopo una lunga parte introduttiva dedicata al modello Model View Controller ed alla gestione degli eventi secondo il delegation model, vediamo adesso di toccare con mano qualche piccolo esempio dedicato alle Swing |
La prima applicazione SwingFinalmente, dopo tanta fatica siamo arrivati alla realizzazione della nostra prima applicazione con le Swing. Come annunciato all'inizio della serie di articoli, creeremo una piccola applicazione che ci permetta di vedere quali sono i vari LookAndFeel disponibili dando la possibilità di passare tra uno e l'altro.Per fare questo esaminiamo nel dettaglio li Listato3_14. 1: package corso.swing.capitolo3;Il package della nostra applicazione è corso.swing.capitolo3 ovvero quello che raggruppa le classe relative al presente capitolo. Di seguito abbiamo importato le classi che utilizzeremo nell'applicazione. Abbiamo opportunamente elencato e diviso le varie classi per evidenziarle maggiormente. Il primo gruppo riguarda le classi del package javax.swing. Il primo termine, javax, indica che le Swing sono considerate una estensione delle Java core. Questo perché non sono necessarie alla creazione di una interfaccia grafica che si realizza anche con le sole AWT. Notiamo che le classi relative ai widget (JFrame, JComboBox, e JPanel) hanno un nome caratterizzato dalla J iniziale. Notiamo, inoltre, la presenza dell'UIManager, descritto nel capitolo precedente, e della classe SwingUtilities che raggruppa un insieme di funzioni di utilità nella gestione delle Swing. Il secondo gruppo di import è relativo ad alcune classi di utilità del package java.awt. Di maggiore importanza è il terzo gruppo di import che si riferisce alle classi ed interfacce utilizzate nella gestione degli eventi. L'evento che gestiremo sarà quello relativo ad una Action per cui, seguendo la regola dei nomi, l'oggetto relativo all'evento stesso si chiamerà java.awt.event.ActionEvent e l'interfaccia degli ascoltatori java.awt.event.ActionListener. Il package java.awt.event raggruppa, infatti, le classi ed interfacce relative ai vari eventi. Alla riga 26 vi è l'intestazione della classe. La nostra classe, PlafJFrame, estende un JFrame (che esamineremo meglio, come gli altri widget di questa semplice applicazione, nei capitolo seguenti). Alla riga 33 inizia il costruttore che contiene la maggior parte del codice. Alla riga 41 mettiamo un in array, l'insieme delle descrizioni relative ai L&F disponibili. Attraverso il metodo static getInstalledLookAndFeel() della classe UIManager si ottiene, infatti, un array di oggetti di tipo UIManager.LookAndFeelInfo che contengono le informazioni volute. Questo array ci sarà utile all'interno di una classe anonima per cui lo indichiamo come final (la cosa non disturba visto che il suo valore non cambia). Alla riga 48 mettiamo i nomi dei L&F disponibili in un array che utilizziamo per riempire un JComboBox. Se andiamo a vedere la documentazione della JComboBox, ci accorgiamo che essa è sorgente di un evento Action che notifica ai suoi ascoltatori ad ogni scelta. Creiamo allora, alla riga 67, un ascoltatore della combo attraverso una classe anonima. Essa dovrà semplicemente implementare il metodo actionPerformed() previsto dall'interfaccia ActionListener. Alla riga 77 prendiamo l'indice del nuovo elemento selezionato. Alla riga 81, utilizzando il precedente array delle informazioni relative ai vari L&F, prendiamo il nome della classe corrispondente al L&F. Alla riga 88, finalmente, abilitiamo il nuovo L&F attraverso il metodo static setLookAndFeel() della classe UIManager. Questo non basta per modificare l'aspetto della nostra piccola applicazione. Per notificare a tutti i widget che devono aggiornare il loro Look, si utilizza il metodo static updateComponenteTreeUI() della classe SwingUtilities. Per completezza facciamo una piccola nota relativa al metodo setVisible(), ridefinito alla riga 105, per posizionare il JFrame al centro dello schermo. ConclusioniIn questo impegnativo capitolo abbiamo approfondito gli aspetti di Java che più si utilizzano nella realizzazione di interfacce grafiche con le Swing. Abbiamo esaminato nel dettaglio i vari tipi di inner classes e visto come si programma utilizzando una gestione degli eventi per delega (Delegation Model). Abbiamo concluso con una piccola applicazione che mettesse in pratica sia gli aspetti relativi alla gestione del PluggableLookAndFeel (PLAF). |
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|