Boa Tarde a todos!
Bom estou tentando tirar o tratamento dos eventos do form, colocando-os em uma classe separada e tratando os eventos gerados na classe de negócio!
Eu consegui fazer esse esquema funcionar, para os botões (ActionListener) o que não estou conseguindo é para os demais eventos, Mouse, teclado, etc…
Segue a classe…
package br.com.sisestagioII.visao;
import java.awt.event.*;
import java.awt.Window;
import java.util.*;
public class ActionSupport implements ActionListener{
private Window window;
/** Creates a new instance of ActionSupport */
public ActionSupport(Window window) {
this.window = window;
}
private List<ActionListener> listeners = new ArrayList<ActionListener>();
public void addActionListener(ActionListener listener) {
listeners.add(listener);
}
public void removeActionListener(ActionListener listener) {
listeners.remove(listener);
}
public void fireActionEvent(ActionEvent e) {
Iterator<ActionListener> it = listeners.iterator();
while (it.hasNext()) {
ActionListener listener = it.next();
listener.actionPerformed(new ActionEvent(window, ActionEvent.ACTION_PERFORMED, e.getActionCommand()));
}
}
public void actionPerformed(ActionEvent e) {
fireActionEvent(e);
}
}
Na classe do formulário faço uma referência a classe ActionSupport, e digo que o btnIncluir que essa classe é que vai escutar seus eventos!
private ActionSupport actionSupport = new ActionSupport(this);
public void addActionListener(ActionListener listener){
actionSupport.addActionListener(listener);
}
public void removeActionListener(ActionListener listener){
actionSupport.removeActionListener(listener);
}
btnIncluir.addActionListener(actionSupport);
public class EstadoBO implements GenericDAO, ActionListener, MouseListener{
private Estado modelo;
private FormEstado visao;
private int id;
public EstadoBO(FormEstado visao, int id){
this.visao=visao;
this.id=id;
visao.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
try{
if (e.getActionCommand().equals("incluir")){
id=0;
visao.controlaBotoes("Incluir");
Repositorio.limpaJTextFields(visao.getComponents());
}
......
....
Dessa forma eu consigo controlar os eventos dos botões a partir da classe de negócio, agora não estou conseguindo fazer isso para os demais eventos…
Se alguém puder ajudar!
Obrigado
Diego