Allora, come guida ti coniglio questa:
skenz.it/traduttori/risorse/… (solo la parte AWT-SWING-APPLET, da pag 412)
Il succo di tutto è passare all'oggetto in questione un oggetto di una classe che implementi action listener (l'interfaccia che gestisce gli eventi)
Esempio preso dal libro:
[CODE]
import java.awt.*; //Uso AWT, ma il concetto è lo stesso!
public class TrueDelegationModel
{
private Frame f;
private Button b;
private Label l;
public TrueDelegationModel()
{
f = new Frame("Delegation Model"
;
b = new Button("Press Me"
;
l = new Label();
}
public void setup()
{
b.addActionListener(new TrueButtonHandler(l)); //Devo passare come parametro un oggetto di una classe che implementi ActionListener
f.add(b,BorderLayout.CENTER);
f.add(l,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
public static void main(String args[])
{
TrueDelegationModel delegationModel = new TrueDelegationModel();
delegationModel.setup();
}
}
[/CODE]
[CODE]
import java.awt.event.*; //Package in cui è presente l'interfaccia ActionListener
import java.awt.*;
public class TrueButtonHandler implements ActionListener //implemento la famosa interfaccia
{
private Label l;
private int counter;
public TrueButtonHandler(Label l)
{
this.l = l; //Passo il reference del label per poterlo modificare da questo oggetto
}
/*
Il cuore di tuttto. Quando tu clicchi sul bottone (o qualunque altra cosa a cui hai passato un oggetto di questa classe) viene eseguito chiamato questo metodo.
*/
public void actionPerformed(ActionEvent e)
{
l.setText(e.getActionCommand() + " - " + (++counter));
}
}
[/CODE]
In poche parole tu passi al metodo "addActionListener()" un oggetto di una classe che implementa actionListener e quando tu schiacci il pulsante viene eseguito il codice di "actionPerformed()". Il ragionamento è analogo per tutto, cambia solo l'interfaccia implementata e i metodi.
Spero di essere stato chiaro. Per
qualsiasi dubbio chiedimi pure. (Grazie per la domanda, mi sono accorto che in realtà questo tipo di codice lo avevo imparato a memoria senza ragionarci sopra, cosa che ho dovuto fare per risponderti
)