PDA

Visualizza la versione completa : [JAVA] ActionListener


l.golinelli
04-10-2002, 10:04
Come faccio a mettere la classe che implementa l'ActionListener di un bottone fuori dalla classe principale e a passargli dei parametri???

Se per esempio ho un bottone e un'etichetta nella classe Pricipale

Poi al bottone aggiungo l'ActioListener.

Quindi creo un'altra classe che implementa l'ActionListener in cui quando clicco deve cambiare il testo all'etichetta.

Ecco non mi va!!! :dh:

Mi va solo se la classe che implementa l'ActionListener la inserisco all'interno della classe principale, ma cos non mi piace!!!

Help me!!! :sgrat:

reinox
04-10-2002, 11:29
Crei una classe che estende il l' ascoltatore originario
ed associ una sua istanza al componente che ti interessa
col metodo addActionListener(nomeclasseascoltatore).
Chiaro ?
Ciao

reinox
04-10-2002, 11:30
Riporta il codice che gli do un' occhiata, cosa intendi per ..."Passare dei parametri ??? " ad un ascoltatore di solito non passi dei parametri ... si limita ad.... ASCOLTARE ;)

l.golinelli
04-10-2002, 12:00
import java.awt.event.*:
import java.awt.*;

class Prova extends Frame
{
Label label = new Label("Ciao");
Button button = new Button("Clicca");

public static void main(String args[])
{
new Prova();
}

public Prova()
{
super("titolo");

add(label);
add(button);

button.addActionListener(new Click());

pack();
show();
}

public class Click implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
label.setText("Hai Cliccato!");
}
}
}

:quote:

Cos funziona ma l'ActionListener interno alla classe Prova!

Io lo voglio in un classe a parte!!!!! :dh:

userfra
04-10-2002, 12:20
nella classe Prova

ActionListener bottoneListener = new BottoneListener();
bottone.addActionListener(bottoneListener);
-----



class BottoneListener implements ActionListener {
public void actionPerformed(ActionEvent e) {

label.setText("Hai Cliccato!");

}
}

l.golinelli
04-10-2002, 12:40
Non va!!! nella classe "BottoneListener" non conosce l'oggetto "label"!!! :dh:

l.golinelli
04-10-2002, 12:53
Cio io voglio mettere la classe BottoneListener fuori dalla classe Prova:

Prova.java
BottoneListener.java

In questo modo nella classe BottoneListener non puoi chiamare label.setText perche non sa cos' "label". Infatti BottoneListener non "estende" Prova ma lo "implementa"!

l.golinelli
05-10-2002, 18:15
up :quote:

degno
05-10-2002, 18:28
Non lo implementa perch la classe click non "vede" l' oggetto label che sta nella classe Prova, quindi devi fare in modo che la classe click veda la classe Prova e da questa accedere all' oggetto label:

import java.awt.event.*:
import java.awt.*;

class Prova extends Frame
{
Label label = new Label("Ciao");
Button button = new Button("Clicca");

public static void main(String args[])
{
new Prova();
}

public Prova()
{
super("titolo");

add(label);
add(button);

button.addActionListener(new Click(this));

pack();
show();
}

public class Click implements ActionListener
{
Prova P;

public Click(Prova parametro)
{
P=parametro;
}

public void actionPerformed(ActionEvent e)
{
P.label.setText("hai cliccato");
}
}
}

l.golinelli
06-10-2002, 19:52
Thank You!!! :p

Loading