Criei um componente que extende JComponent e implementa ComponentListener, ActionListener e FocusListener. Tudo funciona direitinho dentro do componente. Como faço para capturar os listeners do componente na minha aplicação???
:roll:
Valeu!!!
A classe JComponent implementa um método getListeners(). Talvez se você sobrepor esse método e fazer ele retornar os listeners registrados no seu componente de acordo com a classe deles.
Quando você usa algum método do tipo addXXXXListener() provavelmente você está guardando esses objetos interessados em receber as notificações em um ArrayList ou Vector. Daí fica relativamente simples implementar (sobrepor, na verdade) getListeners().
Será que é isso que você quer?
B
bigEdie
E ai Dango...
Eu tentei a dica que vc deu mas não virou...
Vou postar o código para ver se dá p/ entender.
Componente:
publicclassFormattedFieldextendsJComponentimplementsComponentListener,FocusListener{//Declaração de variáveisprivateJFormattedTextFieldtxt;//TextprivateJLabellbl;//LabelprivateTagPesquisapesq;//Tag de pesquisaprivatebooleantag;//Adiciona tag de pesquisa//ConstrutorpublicFormattedField(Stringmascara,booleanpesquisa,Stringlabel){setLayout(null);initTxt(mascara);if(pesquisa){tag=pesquisa;initTag();}if(label!=null){initLbl(label);}addComponentListener(this);}privatevoidinitTxt(Stringmascara){txt=newJFormattedTextField(Formato.criaMascara(mascara));txt.setFont(Formato.TEXT_FONT);txt.setOpaque(false);txt.setBorder(Formato.FIELD_BORDER);add(txt);//Evento que dispara a tecla PAGE DOWN para a pesquisatxt.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEventevt){intintKey=evt.getKeyCode();if(intKey==KeyEvent.VK_PAGE_DOWN){System.out.println("Down!!!");}}publicvoidkeyReleased(KeyEventarg0){}publicvoidkeyTyped(KeyEventarg0){}});txt.addFocusListener(this);}privatevoidinitLbl(Stringtexto){lbl=newJLabel(texto);lbl.setFont(Formato.LABEL_FONT);lbl.setForeground(Formato.FORE_LABEL);add(lbl);}privatevoidinitTag(){pesq=newTagPesquisa();add(pesq);}publicvoidcomponentHidden(ComponentEventarg0){}publicvoidcomponentMoved(ComponentEventarg0){}publicvoidcomponentResized(ComponentEventarg0){intl=arg0.getComponent().getWidth();inta=arg0.getComponent().getHeight();//sobrescreve a altura informada para o componentearg0.getComponent().setSize(l,33);//Fixa a altura dos objetos dentro do componentetxt.setSize(l,16);if(tag)pesq.setLocation(l-14,1);if(lbl!=null)lbl.setBounds(0,16,l,15);}publicvoidcomponentShown(ComponentEventarg0){}publicvoidsetText(Stringtexto){txt.setText(texto);}publicStringgetText(){returntxt.getText();}publicvoidsetFont(Fontfonte){txt.setFont(fonte);}publicvoidfocusGained(FocusEventarg0){txt.setBorder(Formato.FOCUS_BORDER);}publicvoidfocusLost(FocusEventarg0){txt.setBorder(Formato.FIELD_BORDER);}}