botón no me registra la clase que le indico para que lo maneje( addActionList...

Iniciado por jhonatanAsm, 13 Agosto 2013, 02:33 AM

0 Miembros y 1 Visitante están viendo este tema.

jhonatanAsm

hola, pues el asunto es que la clase Controlador no reconoce los eventos de la  clase principal. el código es este:

Código (java) [Seleccionar]


...
//clase principal

Controlador controlador;//variable de clase
//código generado por eclipse :
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Basico window = new Basico();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
...

               JButton btnAgregarAgencia = new JButton("Agregar Agencia");
//asigno objeto de mi clase para que le gestione:
btnAgregarAgencia.addActionListener(controlador);
System.out.println("objeto asignado");
btnAgregarAgencia.setBounds(60, 46, 123, 23);
frame.getContentPane().add(btnAgregarAgencia);
...


y el código de la clase que gestiona:

Código (java) [Seleccionar]

...
public class Controlador implements ActionListener{

public void actionPerformed(ActionEvent e){
System.out.println("evento");
}


Tendrán algo que ver que estén en distintos paquetes, aunque las esté importando?.
salu2.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

jhonatanAsm

si cambio esta línea en la clase principal :

Código (java) [Seleccionar]

btnAgregarAgencia.addActionListener(controlador);


por esto:

Código (java) [Seleccionar]

btnAgregarAgencia.addActionListener( new Controlador() );


si funciona :o, pero alguien me puede explicar por qué?
:/
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

Oblivi0n

En ningún momento haces this.controlador = new Controlador(); , o al menos no lo muestras en el código. Entonces al manejador de eventos le estas pasando un objeto nulo, lo que se traduce en que no tendrá manejador para ActionEvent.

Si le pasas un new Controlador() ya le estás pasando una instancia del controlador de ActionEvent

jhonatanAsm

claro, en ningún momento creo el objeto, de esto se deduce que si a mi variable de clase controlador la declaro e inicializo, ya funcionará como esperaba. gracias.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.