Originariamente inviato da 00FUMI
Ho imparato (fin ora) che per poter associare ad un certo pulsante button una certa azione
Devo creare una classe( interna o esterna alla classe dell'applicazione ) che implementi l'interfaccia ActionListener e relativo metodo;
Non necessariamente: non è necessario creare una classe apposita. Le interfacce (interface) servono proprio a questo: esse possono essere implementate da qualunque classe. Quindi, anche dalla classe che rappresenta l'applicazione stessa. Vedi esempio più avanti.
dopo di che crearne un esemplare
e diciamo aggiungere tale esemplare come parametro ad un certo metodo add del pulsante button
Corretto.
Ora quello che non riesco a capire e' :
Ogni volta che all' interno di una mia applicazione (grafica) voglio inserire non so 10 pulsanti e 4 campi per l'inserimento di testo
Devo creare 14 classi che implementino l'interfaccia ActionListener e relativo metodo?
Ma assolutamente no. Vedi sempre l'esempio sotto.
Se la risposta dovesse essere positiva : le classi da creare conviene crearle interne o esterne all' applicazione?
Non è positiva, ma la risposta può essere data comunque: non ha importanza. Possono essere sia interne, che esterne.
Vediamo l'esempio:
codice:
// Questa classe rappresenta un pannello, con 2 pulsanti
public class Pannello extends JPanel implements ActionListener {
private JButton jb1;
private JButton jb2;
public Pannello() {
setLayout( new GridLayout(1, 2) );
jb1 = new JButton("Pulsante 1");
jb1.addActionListener( this );
jb2 = new JButton("Pulsante 2");
jb2.addActionListener( this );
add( jb1 );
add( jb2 );
}
// Implementare ActionListener significa obbligatoriamente implementare questo metodo
public void actionPerformed(ActionEvent ae) {
if ( ae.getSource().equals( jb1 ) ) {
// Hai premuto il pulsante 1
} else {
// Hai premuto il pulsante 2
}
}
}
Come vedi, esiste solo una classe che fa da pannello, contiene i due pulsanti ed è anche il gestore dell'evento clic su di essi.
Ciao.