Jeg takker for det hurtige svar!
Jeg løste problemet med at fjerne event-listeners af den pågældende
component:
try
{
comp = MAINPANEL.getComponent(comp_nr); //comp nr.
}
catch (ArrayIndexOutOfBoundsException zz)
{
System.err.println("Component nr "+comp_nr+" doesn't exist!");
}
//henter samtlige listeners af componentet
ComponentListener[] listeners = comp.getComponentListeners();
for(int x = 0,y = listeners.length; x < y; x++)
{
comp.removeComponentListener(listeners[x]);
}
//fjerner tabben
MAINPANEL.remove(panel_name);
Man skal bare lige være opmærksom på, at når man fjerner listeners, skal
de fjernes fra den sidste component først, altså, først tabnr. 3,2,1,0
Efter INSERT, adder jeg component listeners, og wupti
Frederik Hansen wrote:
> Hej,
>
> Jeg har prøvet at genskabe din oplevelse.. Og jeg kan også se at Shown
> bliver kaldt.. Men kun i det jeg Remove'er dem, ikke når jeg klikker på
> de andre synlige tabs. Kan du ændre på din kode, sådan at når du remover
> dem, så sætter du et flag, som gør at Shown-kaldet bliver ignorert? Der
> er naturligvis et samtidighedsproblem/udfordring, du lige skal have styr
> på.
>
>
> VK wrote:
>> Hej!
>>
>> Jeg har en TabbedPanel med flere tabs (Jpanels).
>> Jeg vil gerne have, at alle tabs'erne bliver initialiseret i starten,
>> men ikke all vist i appleten. Efter Appleten er startet, hentes der
>> nogen data, som så bestemmer om der skal vises flere paneller eller ej.
>>
>> Jeg bruger Netbeans, hvor det meste af initialiseringskoden bliver
>> genereret af IDE'et selv. Efter iniCompenents() har eksekveret
>> (initialisering af samtlige komponenter på Appleten), skjuler jeg de
>> unødvendige paneller med:
>> MAINPANEL.remove(panelX); //hvor MAINPANEL er den store TabbedPanel
>> og panelX er en af de tabs der sidder på MAINPANEL.
>>
>> Jeg lytter samtidig om der er blevet valgt et eller andet panel med
>> ComponentShown event listener, som så sætter et flag højt, når panelet
>> er valgt.
>>
>> >Mit problem er, at selvom de paneller der er blevet skjult med
>> remove(),bliver der stadig fyret ComponentShown event, og den bliver
>> ved med det!
>> Med andre ord, reagerer Appleten, som om de skulte paneler altid er
>> vist (Shown). Dette sker ikke med andre, ikke skulte efter
>> initComponents() rutinen :-?