[Java lista] jpanelrol esemeny generalasa
Zidarics Zoltan
zamek at vili.pmmf.hu
2007. Jan. 10., Sze, 07:56:01 CET
hello,
Valaszolok magamnak ( codesearch.google.com segitett ) :)
Minden jo volt, csak az esemeny kuldes igy nez ki:
for (int i = listeners.length - 2 ; i >= 0; i -= 2) {
if (listeners[i] == ChangeListener.class) {
((ChangeListener)listeners[i+1]).stateChanged(evt);
}
}
vagyis egy listener regisztraciojakor bekerul a listener es melle meg a kuldo
objektum is!
Ezert kettesevel kell nezegetni a listenereket,
2007. január 10. 00.21 dátummal Zidarics Zoltan ezt írta:
> Hello,
>
> Van egy JPanelem, ami egy loginszeru kepzodmeny (role azonosito bekerese).
> Azt szeretnem, ha valaki begepel egy jelszot, akkor generalodjon egy
> esemeny, amivel jelezni tudom a role valtozasat a kulvilag szamara. A
> kerdes az, hogy hogyan tudok esemenyt generalni, ill. actionlistener-eket
> fogadni? Igy probalom:
>
> a jpanel-ben:
>
> public void addChangeListener (ChangeListener l) {
> listenerList.add(ChangeListener.class, l);
> }
>
> public void removeChangeListener (ChangeListener l) {
> listenerList.remove(ChangeListener.class, l);
> }
>
> ha kesz az esemeny:
>
> ChangeEvent evt = new ChangeEvent(usr);
>
> // Get list of listeners
> Object[] listeners = listenerList.getListenerList();
>
> // Send event to all listeners
> for (int i=0; i<listeners.length; i++) {
> if (listeners[i] == ChangeListener.class) {
> ((ChangeListener)listeners[i]).stateChanged(evt);
> }
> }
>
> a fogado oldalon:
>
> loginPanel.addChangeListener(new ChangeListener() {
> public void stateChanged (ChangeEvent e ) {
> changeUser (e);
> };
> }
> );
>
> aztan kapok egy szep kover classcastexceptiont :(
> "java.lang.Class cannot be cast to javax.swing.event.ChangeListener"
>
> mit rontottam el?
>
> koszi,
--
Zoltan Zidarics programmer
PTE University Pecs, Hungary
icq: 43288694
További információk a(z) Javalist levelezőlistáról