hola, pues el asunto es que la clase Controlador no reconoce los eventos de la clase principal. el código es este:
...
//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:
...
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.
si cambio esta línea en la clase principal :
btnAgregarAgencia.addActionListener(controlador);
por esto:
btnAgregarAgencia.addActionListener( new Controlador() );
si funciona :o, pero alguien me puede explicar por qué?
:/
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
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.