Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
3Activity
0 of .
Results for:
No results containing your search query
P. 1
Gestione di eventi azione su pulsanti

Gestione di eventi azione su pulsanti

Ratings: (0)|Views: 219 |Likes:
Published by Cinzia Bocchi
Eventi di azione su oggetti JButton
L'esempio mostra come inserire un pulsante in un pannello e come associare all'evento clic la colorazione random del pannello.
Eventi di azione su oggetti JButton
L'esempio mostra come inserire un pulsante in un pannello e come associare all'evento clic la colorazione random del pannello.

More info:

Published by: Cinzia Bocchi on Apr 02, 2010
Copyright:Attribution Non-commercial Share Alike

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/14/2014

pdf

text

original

 
Gestione degli eventi di azione su oggettiJButton
Introduzione: Il modello a delegazione
In Java il modello di gestione degli eventi (detto a delegazione) prevede che sicompiano le seguenti azioni:
1)Individuazione della sorgente dell’evento
Il programmatore stabilisce quale oggetto darà origine a un evento di interesse. Adesempio un pulsante in una GUI genera un evento quando l’utente vi clicca sopra.L’oggetto in questione viene chiamato
 sorgente
dell’evento.
2)Definizione del rilevatore dell’evento
Il programmatore definisce una classe, detta
rilevatore
dell’evento (in inglese
listener 
), contenente la descrizione delle operazioni da eseguire per gestire l’eventoche si è verificato. La classe rilevatore deve sempre implementare un’interfacciaspeciale, detta
interfaccia rilevatore
.
3)Registrazione del rilevatore presso la sorgente
Il programmatore deve associare il rilevatore alla sorgente dell’evento. Quando siverifica l’evento, la sorgente invia un
oggetto evento
a tutti i rilevatori registrati, inmodo che essi possano compiere le azioni predisposte. Tutti gli eventi che non hannoun rilevatore, sono ignorati.
Gestione dell’evento clic su un pulsante
L’unico evento disponibile per i pulsanti è la pressione su di essi con il mouse.Vediamo, attraverso un esempio, quali azioni deve intraprendere il programmatoreaffinché l’applicazione gestisca tale evento.Costruiamo una GUI contenente un solo pannello, inserito in un frame in posizionecentrale, e un unico pulsante etichettato con la stringa
Giallo
. Si vuole gestire ilseguente evento: al clic del mouse sul pulsante, il pannello deve cambiare il colore disfondo in giallo.
import
javax.swing.JButton;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
 public
 
class
InteractiveFrame {
 public
 
static
 
 void 
main(String[] args) {
final
String TITOLO ="Colora il pannello";JFrame frame =
new
JFrame(TITOLO);frame.setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE 
);JPanel pane =
new
JPanel();JButton button =
new
JButton("Colora");pane.add(button);frame.add(pane);frame.pack();
Bocchi CinziaUltimo aggiornamento: 05/11/2011
1
 
frame.setVisible(
true
);}}
Il frame creato1)Individuazione della sorgente dell’evento
La sorgente dell’evento è il pulsante button.
2)Definizione del rilevatore dell’evento
Il rilevatore dell’evento clic su un pulsante è una classe che deve
 – 
implementare l’interfaccia
 ActionListener 
;
 – 
fornire il codice per ogni metodo dell'interfaccia.A questo punto è opportuno ricordare che le interfacce differiscono dalle classi inquanto non hanno variabili di istanza e non forniscono alcuna implementazione deimetodi che definiscono. In altre parole, un’interfaccia specifica solo quali sono i metodie non che cosa fanno. Le classi che implementano un’interfaccia hanno l’obbligo difornire il codice per ogni metodo che essa definisce. Inoltre, tutti i metodi diun’interfaccia sono
 public 
.La sintassi da utilizzare per implementare un'interfaccia è:
class
Rilevatore
implements
 Interfaccia
Nel nostro esempio, se chiamiamo il rilevatore
ButtonListener
, dovremo scrivere:classButtonListenerimplementsActionListener Per fornire il codice di tutti i metodi dell'interfaccia, dobbiamo ovviamente conoscerequali sono tali metodi. L'interfaccia ActionListener possiede un solo metodo
actionPerformed 
, che dovrà essere implementato.La firma del metodo actionPerformed è:
public void actionPerformed (ActionEvent e)
Tornando all’esempio, possiamo definire (in un file separato) la classerilevatore come segue:
Bocchi CinziaUltimo aggiornamento: 05/11/2011
2
 
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
 public
 
class
ButtonListener
implements
ActionListener {
 public
 
 void 
actionPerformed(ActionEvent e){//codice che gestisce l'evento}}
3)Registrazione del rilevatore presso la sorgente
Per registrare il rilevatore presso la sorgente si crea un’istanza della classe rilevatore esi invoca il metodo
addActionListener 
, passandogli come parametro l’istanza creata.Nel codice della classe InteractiveFrame dovremo aggiungere, dopo la creazione delpulsante:
ButtonListener listener =
new
ButtonListener();button.addActionListener(listener);
Una forma abbreviata della precedente scrittura, adottabile se non necessario fornireun nome all'istanza della classe ButtonListener, è:
button.addActionListener(
new
ButtonListener());
Le classi rilevatori di eventi devono sempre contenere la direttiva di importazione
import java.awt.event.*
.
Scrittura del codice per la gestione dell'evento
Il metodo actionPerformed della classe ButtonListener, deve cambiare il colore disfondo del pannello; il codice potrebbe essere il seguente:
1234567 public
 
 void 
actionPerformed(ActionEvent e){Random randomGenerator =
new
Random();
int
red = randomGenerator.nextInt(
MAX_VALUE 
);
int
green = randomGenerator.nextInt(
MAX_VALUE 
);
int
blue = randomGenerator.nextInt(
MAX_VALUE 
);pane.setBackground(
new
Color(red, green, blue));}
Rigo 2
: crea una istanza della classe java.util.Random; la classe Random consente digenerare un flusso di numeri random.
Righi 3-5
: il metodo
nextInt 
restituisce un numero random intero compreso tra 0(incluso) e il parametro specificato (escluso); la costante
MAX_VALUE 
, definita nellaclasse ButtonListener, vale 256 poiché 255 è il massimo valore che ogni componentedi un colore RGB può assumere.Il codice riportato, però, genera un errore in fase di compilazione: il compilatore non èin grado di trovare la variabile
pane
. Infatti, pane è una variabile di istanza dellaclasse InteractiveFrame e il suo riferimento non è noto alla classe ButtonListener.
Bocchi CinziaUltimo aggiornamento: 05/11/2011
3

Activity (3)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
daddidadoo liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->