[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