JJ,
 
díky, taky mě to napadlo. Přidám nějakého posluchače, třeba aby při vyjmutí z kontejneru ten panel nastavil na NULL. Nevíte, jestli se tím automaticky zruší i komponenty na tom panelu? (Pokud ne, není to takové neštěstí. Můžu je projít a zrušit přímo - vím kolik jich je.)
 
Díky, Petr Zajíc
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On Behalf Of Petr Synek
Sent: Tuesday, June 28, 2005 3:43 PM
To: Java
Subject: RE: Swing - problém s komponentou JPanel

this.setVisible(false);
container.remove(this);

je OK.
 
Je ale treba jeste z nadrazene tridy (tam kde jste vas odvozeny panel vytvoril) nastavit tuto referenci na null.
Napr.
class NadrazenaTrida {
   private JPanel panel;
 
   public NadrazenaTrida() {
      this.panel = new MujJPanel();
      ...
   }
}
 
a po zavreni panelu zde (v nadrazene tride) tuto referenci vynulovat.
Tj.
this.panel = null;
Ve vasem pripade je tedy treba nejak notifikovat nadrazenou tridu, ze JPanel byl zrusen a reference na nej se ma vynulovat.
 
Petr
 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Zajíc
Sent: Tuesday, June 28, 2005 13:04
To: [email protected]
Subject: Swing - problém s komponentou JPanel

Potřebuji poradit (podotýkám, to je začátečnický dotaz, s Javou si hraju pár neděl...)
 
V mojí Swing aplikaci mám třídu, která rozšiřuje JPanel. V určitém okamžiku nahrávám instanci této třídy a umisťuju ji do nějakého containeru. Ta moje třída má na panelu ještě celou řadu hejblat, pár čudlíků a jednu JTable. Ve finále se může jednat o dost velkého žrouta systémových prostředků.
 
Zatím jsem nepřišel na to, jak celou tuto instanci dostat z paměti, když ji nepotřebuji. Scénář je ten, že na panelu je tlačítko, které když zmáčknu, tak potřebuji, aby celý panel zmizel do věčných lovišť, zmizel i z kontejneru a uvolnil místo soudruhům, kteří přijdou po něm. Stávající kód:
 
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==cmdOk){
            this.setVisible(false);
            container.remove(this);
            container.revalidate();
        }
Nevím, ale zdá se mi, že tohle sice moji instanci skryje, ale zůstane i nadále v paměti. Takže mám otázku:
 
Jak to provést (něco jako this=null (špatná syntaxe) nebo dispose(), jenže tuto metodu JPanel nemá...)
 
Předem díky za tipy,
 
Petr Zajíc


________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Server.
http://www.nod32.com

Odpovedet emailem