this.setVisible(false);
container.remove(this);
je OK.
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();
}
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
