Java - Listener

 
Vista:

Listener

Publicado por Oscar (2 intervenciones) el 25/03/2006 21:04:33
Hola, estoy empezando con los eventos y tengo un problema. Suponemos dos clases. Una en la que creo una ventana a la k añado uns botones, etiketas, etc... y otra clase, un listener k implementa un boton. Mi pregunta es como se hace para pasarle al constructor del listener, la ventana como parametro.

Lo que quiero hacer es que al darle al boton, se me guarde en una variable el valor de un long que tengo en una etiqueta, no se si se me entiende...

Bueno, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Listener

Publicado por Gilberto (378 intervenciones) el 26/03/2006 16:40:04
A ver si es así lo que tienes, supon una clase miFrame con botones, etiquetas,etc:

class miFrame extends JFrame {
JButton boton1;
JTextField campo1;
...
miFrame(){
..
boton1.addActionListener(miBotonListener(this));
}

la otra clase implementa el listener, por lo que si necesita acceder ,digamos, al campo1,le pasamos una referencia en el constructor:

class miBotonListener implements ActionListener {
miFrame miframe; // para almacenar la referencia al frame
public miBotonListener(miFrame f){
miframe = f; // se guarda la referencia
long valor;
}

public void actionPerformed(ActionEvent e){
valor = (new Long(miframe.campo1.getText())).longValue(); // invocar al getText
} // del campo1 a traves
} // de la referencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listener

Publicado por Oscar (2 intervenciones) el 26/03/2006 20:02:59
Hum... no lo pillo muy bien como lo aces.. te pongo mi codigo.

public class Finestra extends JFrame {

private JButton suma = new JButton("+");
private JLabel numeros = new JLabel("0");
long valor1;
...

Suma operacio1 = new Suma(numeros,this); // llamo al listener i le paso como referencia el label i la ventana.

}

public void valor(long valor1){
this.valor1=valor1;

}



public class Suma implements ActionListener {

private JLabel numeros;
private JFrame finestra;
long valor1=0;

public Suma(JLabel numeros,JFrame finestra) {
this.numeros = numeros;
this.finestra=finestra;

}


public void actionPerformed(ActionEvent evt) {


String s = numeros.getText();
valor1=Long.parseLong(s);
finestra.valor(valor1);

}

kiero llamar al metodo "valor" de la clase Finestra para que quede guardado el valor, pero no me detecta el metodo :S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listener

Publicado por GILBERTO (378 intervenciones) el 10/04/2006 01:03:14
El problema con finestra, que està dentro del ActionListener, es que lo declaras como JFrame, por lo que no existe el mètodo valor. debes cambiar la declaraciòn de finestra como

public class Suma implements ActionListener {

private JLabel numeros;
private Finestra finestra;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar