Java - Conseguir objeto dentro de su action listener

   
Vista:

Conseguir objeto dentro de su action listener

Publicado por David (1 intervención) el 08/06/2010 18:03:11
Hola:

Llevo un buen rato dándole vueltas y buscando y no encuentro como conseguir un objeto JButton dentro de su ActionListener para poder cambiar su color o su texto. No me vale declararlo como global en la clase porque se crean dinámicamente. Os pongo el trozo de código a ver si se me entiende mejor ;)

JButton boton = new JButton ( "" );

boton.addActionListener(new ActionListener() {
public void actionPerformed ( ActionEvent e )
{
// Aquí quiero tener la referencia al objeto "boton" para poder trabajar sobre él, pero no lo consigo siendo "boton" una variable local dentro de un método. ¿Es posible?
}
});

Un saludo.
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:Conseguir objeto dentro de su action listener

Publicado por YamilBracho (2072 intervenciones) el 08/06/2010 20:34:29
Prueba con e.getSource()
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:Conseguir objeto dentro de su action listener

Publicado por LeO (33 intervenciones) el 09/06/2010 13:43:46
Hola! una opcion es declarar el botón pero anteponiedole "final", para que no cambie y para que te reconozca el botón dentro del actionPerformed
seria así:

final JButton boton=new JButton();
boton.addActionListener(new ActionListener() {
public void actionPerformed ( ActionEvent e )
{
//Acá vas a poder utilizar el JButton boton tranquilamente
}
});

otra opción ya te la dijeron recién, utilizando "e.getSource()" pero tené en cuenta que esta llamada es de tipo Object pero se solucionaria Haciendo un Cast.

1-
final JButton boton=new JButton();
boton.addActionListener(new ActionListener() {
public void actionPerformed ( ActionEvent e )
{
Object source=e.getSource() ; // con source tenés referecia al JButton "boton"
//Ejemplo
if(source==b)
JOptionPane.showMessageDialog(null,"Apretó el botón!")

}
});

2-
final JButton boton=new JButton();
boton.addActionListener(new ActionListener() {
public void actionPerformed ( ActionEvent e )
{
JButton source=(JButton)e.getSource() ; // con source tenés referecia al JButton "boton"
//Ejemplo
if(source==b)
JOptionPane.showMessageDialog(null,"Apretó el botón!")

}
});

Es casi lo mismo, vos verás con cual te ves más cñomodo

Un abrazo!
LeO
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:Conseguir objeto dentro de su action listener

Publicado por LeO (33 intervenciones) el 09/06/2010 13:47:47
Perdón, en las sentencias de condicion el "b" es "boton". ass:
if(source==boton)

Lo mismo para el de más abajo!

Un abrazo!
LeO
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