Cuando trabajas con interfaces gráficas, siempre es convenible utilizar el patrón de diseño Modelo - Vista - Controlador (MVC). De ésta manera delegas responsablidades de forma ordenada y eficiente.
Cita de: francoyo1998
alguna forma de q un boton tenga una funcion sin tener q pasarle una clase como argumento?
En Swing hay dos formas de usar eventos: Por medio de clases internas y por implementación de la interfaz ActionListener que es la proveedora de eventos para controles.
Código
@Override } });
La otra forma es implementarlo la interfaz ActionListener:
Código
// metodos que se implementaran @Override } @Override // codigo que quieres que haga } // y otros mas... public MyGUI() { super("ActionListener"); this.setSize(400,400); this.setResizable(false); // registra el listener al boton btnSayHello.addActionListener(this); fl.add(btnSayHello); this.add(fl); this.setVisible(true); } }
[-] Ejemplo MVC:
[-] Paquete net.badprogrammer.events.view
Código
// le pasamos por parametro la referencia de la clase MyGUI private static final MyGUIController controller = new MyGUIController(this); public MyGUI() { this.setSize(400,400); this.setResizable(false); // registra el listener al boton btnSayHello.addActionListener(controller); fl.add(btnSayHello); this.add(fl); this.setVisible(true); }
[-] Paquete net.badprogrammer.events.model: Aquí irá tu lógica de negocio.
[-] Paquete net.badprogrammer.events.controller: Aquí irán las clases que controlarán las vistas y las clases del model:
Código
private MyGUI gui; public MyGUIController(MyGUI gui) { this.gui = gui; } @Override if (event.getActionCommand().equals("btnSayHello")) { } if (event.getActionCommand().equals("btnExit")) { } } // los otros metodos implementados por ActionListener }
Nota: En el paquete net.badprogrammer.model van a ir tus clases de tu lógica de negocio, es decir las clases que requieren mayor encapsulasión, que pueden ser clases que representen a usuarios, productos, etc. Éstas clases también deben ser accedidas solo por el Controlador.
Espero hayas comprendido. Saludos.