|
JSem: 4.4 |
In questa ultima parte dedicata alla gestione degli eventi, ci limiteremo ad illustrare alcune delle possibilità offerte dall'AWT; si rimanda alla documentazione per ulteriori informazioni. L'applet seguente implementa varie interfacce listener: AdjustmentListener, ItemListener, KeyListener, ActionListener. Questa applet illustrativa ha le seguenti funzionalità: Per una migliore visualizzazione si possono impostare le dimensioni su width = 600, height = 400. Il comportamento dell'applet dipende dall'ordine nel quale vengono effetuate le operazioni sopra descritte, per esempio una modifica del colore dello sfondo in corso di scrittura provocherà la cancellazione del testo (tranne l'ultima riga),ecc... Il comportamento dipende anche dal browser: con appletviewer l'applet è sempre in ritardo di una riga e il tasto Cancella non permette di cancellare tutto; con IE questi problemi non sussistono. Questo è dovuto al fatto che quando si scrive una stringa S="a" nella TextArea TA e si preme invio, per appletviewer la stringa ottenuta con TA.getText() è "a" , è solo DOPO che la stringa è stata stampata che diventa "a\n" (\n sta per newline); per IE invece la stringa ottenuta con TA.getText() è subito "a\n" (vedere commento all'inizio del codice). Per funzionare l'applet ha bisogno della classe TextCanvas.class, premere qui per scaricare il codice completo. Questa applet introduce componenti e Listener nuovi. I costruttori sono: Checkbox(): crea una casella di controllo senza etichetta, inizializzata su falso (DESELECTED). Checkbox(String): casella di controllo con etichetta (String), inizializzata su DESELECTED. Checkbox(String, boolean): casella di controllo con etichetta (String) inizializzata sul valore specificato da boolean. Cliccando su un Checkbox si genera un ItemEvent, il metodo e.getStateChanged() restituisce due valori possibili: SELECTED o DESELECTED. E' da segnalare l'esistenza di gruppi di caselle di controllo, detti anche pulsanti radio, perchè il gruppo si comporta come i pulsanti di una radio: quando si seleziona un pulsante, tutti gli altri vengono deselezionati. Vedere CheckboxGroup nella documentazione. I TextArea si differenziano dai TextField (campi di testo) in quanto presentano la possibilità di inserire più righe di testo; un'altra differenza importante: un TextField genera un ActionEvent quando si preme Invio alla fine dell'immissione del testo, un TextArea invece genera un KeyEvent (vedremo gli eventi della tastiera più avanti). I costruttori sono: TextArea(); TextArea(int rows, int columns); TextArea(String text); TextArea(String text, int rows, int columns); TextArea(String text, int rows, int columns, int scrollbars); E' facile capire a cosa si riferiscono i vari parametri, tranne forse int scrollbars che dovrebbe misurare lo spessore della barra di scorrimento. TextArea è molto simile a TextField. Il metodo getKeyChar() della classe KeyEvent permette di ottenere il carattere battuto nell'area testo, i metodi getText(), setText() eredita da TextComponent permettono di ottenere o impostare il testo (come stringa) dell'area di testo. Questa classe estende Component, il costruttore è: Choice(), genera ItemEvent e implementa ItemListener. Per aggiungere delle voci al menù si può usare il metodo add(String). Il metodo getSelectedItem() ritorna un int che è l'indice dell'item selezionato in quel istante. Questa classe estende Component; i costruttori sono: Scrollbar(); Scrollbar(int orientation); Scrollbar(int orientation, int value, int visible, int minimum, int maximum) Col primo costruttore, la barra viene verticale. L'int orientation può essere uno dei due valori Scrollbar.VERTICAL; Scrollbar.HORIZONTAL; value è il valore ("iniziale"), visible è lo spessore del cursore, minimum (risp. maximum) è il valore minimale (risp. massimale) possibile; in realtà il valore massimo possibile è maximum - visible. Il metodo setValue(int) permette di impostare il valore. Una barra di scorrimento genera AdjustmentEvent, l'interfaccia AdjustmentListener ha un unico metodo: adjustmentValueChanged(AdjustmentEvent ade). Un'ultima osservazione riguardante questa applet: nella gestione degli ItemEvent abbiamo a priori due sorgenti possibili (il Checkbox e il Choice), per ricuperare il sorgente usiamo il metodo getSource() ereditato da EventObject. Se il sorgente è il menù a tendine (Choice) per distinguere i vari casi, usiamo un'istruzione switch. L'istruzione switch L'istruzione switch è molto utile per rispondere a situazioni con scelte multiple; la sua struttura è la seguente:
La variabile deve essere di uno dei tipi seguenti:int, char, byte, short. Il valore di default (nessuno dei precedenti) può essere omesso. Anche il break può essere omesso, in questo caso il programma prosegue eseguendo il codice del gruppo case successivo (in certe situazioni questo può essere utile). |
next content previous