Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jhonatanAsm en 13 Agosto 2013, 02:33 am



Título: botón no me registra la clase que le indico para que lo maneje( addActionList...
Publicado por: jhonatanAsm en 13 Agosto 2013, 02:33 am
hola, pues el asunto es que la clase Controlador no reconoce los eventos de la  clase principal. el código es este:

Código
  1.  
  2. ...
  3. //clase principal
  4.  
  5. Controlador controlador;//variable de clase
  6. //código generado por eclipse :
  7. public static void main(String[] args) {
  8. EventQueue.invokeLater(new Runnable() {
  9. public void run() {
  10. try {
  11. Basico window = new Basico();
  12. window.frame.setVisible(true);
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. });
  18. }
  19. ...
  20.  
  21.                JButton btnAgregarAgencia = new JButton("Agregar Agencia");
  22. //asigno objeto de mi clase para que le gestione:
  23. btnAgregarAgencia.addActionListener(controlador);
  24. System.out.println("objeto asignado");
  25. btnAgregarAgencia.setBounds(60, 46, 123, 23);
  26. frame.getContentPane().add(btnAgregarAgencia);
  27. ...
  28.  

y el código de la clase que gestiona:

Código
  1. ...
  2. public class Controlador implements ActionListener{
  3.  
  4. public void actionPerformed(ActionEvent e){
  5. System.out.println("evento");
  6. }
  7.  

Tendrán algo que ver que estén en distintos paquetes, aunque las esté importando?.
salu2.


Título: Re: botón no me registra la clase que le indico para que lo maneje( addActionList...
Publicado por: jhonatanAsm en 13 Agosto 2013, 03:18 am
si cambio esta línea en la clase principal :

Código
  1. btnAgregarAgencia.addActionListener(controlador);
  2.  

por esto:

Código
  1. btnAgregarAgencia.addActionListener( new Controlador() );
  2.  

si funciona :o, pero alguien me puede explicar por qué?
:/


Título: Re: botón no me registra la clase que le indico para que lo maneje( addActionList...
Publicado por: Oblivi0n en 13 Agosto 2013, 03:47 am
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


Título: Re: botón no me registra la clase que le indico para que lo maneje( addActionList...
Publicado por: jhonatanAsm en 13 Agosto 2013, 04:57 am
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.