Label wird ungewollt mehrmals erstellt

Hallo Leute,

folgendes Problem:

Ich habe ein Array von Choices. Diese werden unter bestimmten Bedingungen gelöscht und wieder erstellt.
Das gleiche soll auch für die beiden Labels „g_z“ und „plus“ geschehen. Bei den Choices läuft alles einwandfrei, denn sobald die Bedingung erfüllt ist, werden sie gelöscht und weiter unten dann wieder erstellt.
Das eigentliches Problem sind die Labels. Wähle ich einen Item eines Choices, wird auch der Label erstellt bzw. gelöscht(so soll es auch sein). Das gleiche gilt auch für alle anderen Choices. Habe ich aber schon einen Item des z.B. ersten Choices und des z.B. zweiten Choices gewählt und möchte nun einen anderen Item des 1. Choices wählen , so entstehen auf einmal neue Labels!!! Bei den Choices funktioniert, wie gesagt alles einwandfrei. Das Ganze ist etwas kompliziert und nicht leicht zu schildern, deshalb bitte ich Euch nicht gleich wegzugehen und mir zu schreiben, wenn Ihr es nicht ganz versteht. Denn ich komme echt nicht weiter.
Hier der Code:

public class itemalsfunk extends Applet implements ActionListener {

Panel Hauptpanel= new Panel();
Color bg_co = new Color(158,158,158);
Button b_b = new Button(„Los“);
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 g_z = new Label("=");
Label plus = new Label("+");
TextField t = new TextField(8);

public void init () {
Hauptpanel.setLayout(new GridLayout(0,1));
setBackground(bg_co);
add(Hauptpanel);
panel[11].add(b_b);
b_b.addActionListener(this);
panel[11].add(t);

for (int i=0; i

Hallo

Ich denke, das Problem liegt daran, dass du in aendere()
g_z und plus immer neu initialisiert (… new Label()). Daher
ist beim remove() nicht klar, welches g_z und welches plus
entfernt werden soll.
Mit einem Debugger kann man das sehr gut beobachten.

Gruss, Patrick

Danke schön Patrick,

ich weiss aber nicht genau, wie man mit einem Debugger arbeiten kann. Kannst Du mir da weiterhelfen?

schönen Gruss
Sara

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo

ich weiss aber nicht genau, wie man mit einem Debugger
arbeiten kann. Kannst Du mir da weiterhelfen?

Wenn du keine IDE benutzt, kannst du dir auch erstmal mit System.out
Statements behelfen und die Inhalte von Variablen einfach auf der
Konsole ausgeben.

(Mit eclipse ist debuggen beispielsweise kinderleicht. Haltepunkte
setzen, Rechtsklick auf deine Klasse, Debug As … -> Java Applet,
los geht’s.)

Aber debuggen ist vielleicht gar nicht notwendig, wenn dir das Problem
klar ist. Kurzes Beispiel:
Du kommst an die Stelle, an der du g_z aus dem Panel entfernen willst:

public ... aendere() {
 panel[index].remove(g\_z);
}

Zum Problem kommt es, wenn das hier zu entferndende g_z dem Panel
nicht bekannt ist. Wenn g_z z.B. hier

(g\_z) java.awt.Label[**label0** ,148,5,21x23,align=left,text==]

ist und im Panel aber

("g\_z" im Panel) java.awt.Label[**label7** ,96,5,21x23,align=left,text==]

dann wird es nicht entfernt.

Das muesstest du meiner Meinung nach ueberdenken.

Gruss, Patrick

Hallo Patrick,

vielen Dank, durch Deine Hilfe habe ich es hingekriegt.

Danke
Sara