Salve galera…Eu preciso implementar um ouvinte ou uma lista de ouvintes que recebam o que foi alterado de uma consulta…Por exemplo, eu tenho um cadastro de empresa que abre a consulta de cidades para pegar o codigo da cidade, quero q quando eu pegar esse codigo da cidade um listener passe para a empresa o codigo da cidade q escolhi na consulta.
to tentando assim.
public class ConsultaCidades extends JFrame{
public JTextField codCidade;
public JButton btnClick;
public ConsultaCidades(){
codCidade = new JTextField(10);
btnClick = new JButton("btnClick");
}
//retorna o codigo da cidade
public interface ConsultaCidadeEvent{
public Integer getCodigoCidade();
}
//pega o codigo da cidade selecionada
private interface ConsultaCidadeListener {
public void cidadeSelecionada(ConsultaCidadeEvent evt);
}
//lista de ouvintes
private ArrayList<ConsultaCidadeListener> listeners = new ArrayList<ConsultaCidadeListener>();
//adiciona ouvintes
public void addListener(ConsultaCidadeListener listener){
if(!listeners.contains(listener)){
listeners.add(listener);
}
}
//avisa aos notificadores da mudanca
private void notifyListeners(final Integer codigoCidade) {
ConsultaCidadeEvent evt = new ConsultaCidadeEvent() {
public Integer getCodigoCidade() {
return Integer.parseInt(codCidade.getText());
}
};
}
}
//aqui eh onde tento adicionar um ouvinte e pegar o codigo da cidade
public class CadastroEmpresa implements ConsultaCidadeListener {
public void consultarCidade() {
ConsultaCidade consulta = new ConsultaCidade();
consulta.addListener(this);
consulta.setVisible(true);
}
public void cidadeSelecionada(ConsultaCidadeEvent evt) {
// Este metodo sera invocado quando uma cidade for selecionada.
txtNomeCidade.setText("Cidade escolhida: " + evt.getCodigoCidade());
}
}
Como eu consigo fazer isso ??? Estou na pesquisa mas ainda naum encontrei uma maneira de fazer…
obrigado
bem galera…como ninguem respondeu, eu pesquisei muiiito e encontrei uma solução…um amigo meu Peste_Bubonica canal irc #java-br no freenode.net me ajudou a chegar a um resultado 100% funcional.
fica aqui como fazer.
//classe de consulta Cidades
public class ConsultaCidades extends JFrame{
private JTextField cidade;
private JTextField codigo;
private JButton btnClick;
private JPanel panel1;
public ConsultaCidades(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
panel1 = new JPanel();
codigo = new JTextField(20);
codigo.setName("codigoCidade");
cidade = new JTextField(20);
btnClick = new JButton("Click");
btnClick.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Integer codigoCidsade = Integer.parseInt(codigo.getText());
notifyListeners(codigoCidsade); //aqui eu uso a notificacao para os ouvintes
}
});
panel1.add(codigo);
panel1.add(cidade);
panel1.add(btnClick);
this.add(panel1);
}
/**
*Aqui começa a implementar os listeners
*/
//retorna o codigo da cidade
public interface ConsultaCidadeEvent{
public Integer getCodigoCidade();
}
//pega o codigo da cidade selecionada
public interface ConsultaCidadeListener {
public void cidadeSelecionada(ConsultaCidadeEvent evt);
}//
//lista de ouvintes
private ArrayList<ConsultaCidadeListener> listeners = new ArrayList<ConsultaCidadeListener>();
//adiciona ouvintes
public void addListener(ConsultaCidadeListener listener) {
if(!listeners.contains(listener)){
listeners.add(listener);
}
}
//remove listener
public void removeListener(ConsultaCidadeListener l) {
listeners.remove(l);
}
//avisa aos notificadores da mudanca
private void notifyListeners(final Integer codigoCidade) {
ConsultaCidadeEvent evt = new ConsultaCidadeEvent() {
@Override
public Integer getCodigoCidade() {
return codigoCidade;
}
};
for(ConsultaCidadeListener l : listeners) {
l.cidadeSelecionada(evt);
}
}
/**
* Pronto, aqui termina implementar os listeners
*/
}
//aqui a classe empresa
public class Empresa extends javax.swing.JFrame implements ConsultaCidadeListener {
/** Creates new form Empresa */
public Empresa() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ConsultaCidades c = new ConsultaCidades();
c.setSize(new Dimension(640,480));
c.addListener(this); //adiciono o ouvinte
c.setVisible(true);
}
public void cidadeSelecionada(ConsultaCidadeEvent evt) {
System.out.println(evt.getCodigoCidade()); //aqui exibo o retorno do listener
}
Fazendo dessa maneira não é necessário acoplar classes, que é a maneira como eu trabalhava…Mas o Peste me abriu os olhos…kkkkk !!! Agora consigo trabalhar com .jar diferentes apenas criando esses ouvintes.
P.S: Vlw ae Peste, tu é fera muleke. É nóis q tá. kkk !!!
t+ e obrigado