[Java lista] ChangeListener elvi kerdes
istvan.ketler at lhsystems.com
istvan.ketler at lhsystems.com
2007. Aug. 29., Sze, 11:12:42 CEST
Szia,
több lehetőséged is van. Nem tudom, ki mennyire tartja elegánsnak, de nekem többször hasznos volt.
Az osztály neve SwingUtilities.
Lekérheted például a getRoot(myChildComponent) metódussal - ez visszaadja az első olyan parent-et, aki egy Window (vagy Applet). Cast-olni sajnos kell (mivel vagy Window, vagy Applet leszármazottat ad vissza), de hát ilyen az élet. Ha a lánchívások fanja vagy, akkor könnyebben használhatod a pont ugyanilyen jó getWindowAncestor(myChildComponent) metódust is, ez közvetlenül Window típussal tér vissza (vagy null-lal ha nem Window-n lakik a komponensed), így közvetlenül ráakaszthatod az addWindowListener hívást is.
Másik lehetőség a getAncestorOfClass(Dialog.class, myChildComponent) metódus, de ez nekem inkább akkor szokott hasznos lenni, ha nem a Window vagy JRootPane kell (mivel ez utóbbira is van közvetlen getRootPane metódus).
Ezt az osztályt egyébként is érdemes a Swinges alapműveltség részévé tenni, bár Sun-ék jól eldugták a nevét a JavaDoc végére. :) Régen ezt használtuk pl. az invokeLater() és egyéb hívásokra is, de 1.3 óta inkább közvetlenül az EventQueue a favorit erre. De egy csomó hasznos szolgáltatása van még.
Üdvözlettel,
Iván
> -----Original Message-----
> From: javalist-bounces at javagrund.hu
> [mailto:javalist-bounces at javagrund.hu] On Behalf Of Zidarics Zoltan
> Sent: Tuesday, August 28, 2007 7:11 PM
> To: javalist at javagrund.hu
> Subject: Re: [Java lista] ChangeListener elvi kerdes
>
> hello,
>
> Ez teljesen jonak tunik, koszi. Akkor mar csak abban kerek
> segitseget, hogy a dialog altalaban egy jtabbedPane-t
> tartalmaz, amibe a panelokat rakosgatom igeny szerint.
> Amelyik ilyen panelnak szuksege van a removeListener
> funkciora, annak elo kellene allitani a dialog
> referenciajat, hogy tudjon addwindowListener-t hozzaadni. Ezt
> hogy lehet elegensan megoldani? A getParent nyilvan a
> tabbedPane-t fogja visszaadni, ennek a szuloje pedig mar
> lehet, hogy a dialog, de ez nem tul elegans megoldas.
>
> 2007. augusztus 28. 09.05 dátummal
> istvan.ketler at lhsystems.com ezt írta:
> > Szia,
> >
> > hát ha dialog, akkor ugye a dispose hívása csukja be (hogy
> > felszabadítsa az UI resource-ot). Ebből az alapfeltételezésből
> > kiindulva a takarítás (pl. a listener-ek remove-olása) viszont
> > szerintem nincs jó helyen az OK/Cancel lekezelésénél, mivel
> a dialóg
> > bezárható a "felső kis x" gombbal is (meg kívülről is meghívható
> > rajta a becsukás ugye). Van viszont egy WindowListener,
> amit a dialóg jól meghívhat, amikor bezárják, stb.
> > Szerintem ez remek helye lenne a "bezáráskori takarítás" funkció
> > végrehajtására:
> >
> > Dialog di = ...
> >
> > di.addWindowListener(new WindowAdapter() { public void
> > windowClosed(WindowEvent we) { cleanUp(); } } );
>
> koszi,
> --
> Zoltan Zidarics programmer
> PTE University Pecs, Hungary
> icq: 43288694
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
Sitz der Gesellschaft / Corporate Headquarters:
Lufthansa Systems Hungaria Kft, Budapest
Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung/ Management Board:
Monika Houck
További információk a(z) Javalist levelezőlistáról