Titel: Hauptklasse ruft Methode der inneren Klasse

Hallo,

ich erzeuge von meiner Hauptklasse ein Objekt der inneren Klasse. Diese soll dann verschiedene Dinge tun.
Bis auf einer Sache klappt alles ganz gut. Das Problem ist die Methode „rufItem“. Diese soll überprüfen, ob sich an dem Status der Choices etwas verändert hat. ist dann z.B. dann
ItemEvent.SELECTED == 1
dann werden neue Choices erstellt. Das Problem ist hierbei nun, dass Choices zwar erstellt werden, aber sofort nach 1 Sekunde wieder verschwinden. Dieses Problem ist gelöst, wenn ich sowohl die Methode rufItem, alsauch die Methode aendere direkt von der Hauptklasse aus aufrufe. Ich weiss jetzt nicht, was ich genau falsch gemacht habe. Bitte helft mir Wenn Ihr etwas nicht versteht, dann fragt bitte und geht nicht einfach weg, danke
Hier der Code:
public class Test extends Applet
{
HauptPanel p= new HauptPanel();

public void init()
{
add§;
setBackground(p.bgCo);
}

}

class HauptPanel extends Panel
{

Color bgCo = new Color(158,158,158);
Button buttonL = new Button(„Los“);
TextField t = new TextField(8);
Panel panel [] = new Panel[12];
String items [] = {„NOP“, „ADD“, „LOAD“};
Choice choices [] = new Choice [11];
Choice c1 [] = new Choice [11];
Choice c2 [] = new Choice [11];
Choice cerg [] = new Choice [11];
Label labels [] = new Label[11];
Label gleich [] = new Label[11];
Label plus [] = new Label[11];
String g ="=";
String p ="+";

HauptPanel()
{
setLayout(new GridLayout(0,1));
setBackground(bgCo);
panelsEinfuegen();
labelsEinfuegen();
choicesEinfuegen();
panel[11].add(buttonL);
panel[11].add(t);
rufItem();
}

public void panelsEinfuegen()
{
for (int i=0; i

Das ist doch ein crossposting zu dieser Frage:

http://forum.javacore.de/viewtopic.php?p=19091#19091

Dort reagierst Du nicht auf Hinweise.

http://forum.javacore.de/viewtopic.php?p=19091#19091

Was mir beim schnellen Drüberfliegen aufgefallen ist:

 panel[11].add(buttonL);
 panel[11].add(t);

dürfte nicht funktionieren, wenn das panel-Array eine Größe von 11 halt -> letzter Index ist 10!

Chris

Nochwas…
Die Bedingung:

 if(ItemEvent.SELECTED == 1) { 
 aendere(index, e.getItem()); 
 } 

ist immer erfüllt. ItemEvent.SELECTED ist laut API 1, daher ergibt die Bedingung immer True. Denke mal, dass das aber nicht so beabsichtigt ist.
Besser:

 if(e.getStateChange() == ItemEvent.SELECTED) { 
 aendere(index, e.getItem()); 
 } 

So long,
Chris