# JLabel entfernen



## stadi (19. Jan 2009)

Habe ein kleines Problem in meiner GUI

Ich generiere ein Feld JLabels und füge das zum Container hinzu!

Soweit so gut

Doch wenn ich diese JLabels entfernen möchte, einen neuen Text hinzufügen und wieder zum Container adden, funktioniert es nicht!

Es überschreibt mir die alten JLabels im Fenster!
Vorher:





Nachher:




Hier der Code:

```
while (fach[j]!=null) {
							c.remove(fach[j]);
							j++;
						}
						c.validate();
```

fach --> das Feld von JLabels
c --> Container

Ich bedanke mich im voraus für die Antworten


----------



## Marco13 (19. Jan 2009)

"Das sollte 'eigentlich' gehen....". Ein repaint() nach dem validate() könnte helfen, würde mich aber wundern. Bist du sicher, dass die Labels am Anfang nicht versehentlich zweimal hinzugefügt werden? Kannst du ein compilierbares Beispiel posten?


----------



## Zed (19. Jan 2009)

Warum entfernst du die Label? Würde ein setText da nicht ausreichen?


----------



## Ebenius (19. Jan 2009)

Ich frag mich übrigens, ob hier nicht eher eine JList verwendet werden sollte. Bin mir nicht sicher, aber die Screenshots sehen so aus.

Just my $0.02


----------



## André Uhres (19. Jan 2009)

Nach panel.remove(..) empfehlen wir:

```
panel.revalidate();
panel.repaint();
```
Ohne repaint kann es zu Darstellungsproblemen kommen.
Siehe auch: http://www.java-forum.org/de/viewtopic.php?p=485462#485462


----------



## stadi (19. Jan 2009)

revalidate() und repaint() funktionieren leider auch nicht

2 Zeilen sind immer ein JLabel!  

und wenn ich in der Drop-down-liste ein anderes Attribut auswähle stellt er eine Verbindung mit einer Mysql-Datenbank her und gibt mir in den JLabels die versch. Datensätze dazu aus
Ich wollte keine JList nehmen, weil genau 1Datensatz einem JLabel entspricht

setText() geht leider auch nicht! Es wird wie schon vorher beschrieben einfach überschrieben!


----------



## Marco13 (19. Jan 2009)

kleines compilierbares Beispiel wo der Fehler auftritt (ich glaub dafür bastel' ich mir irgendwann ein Makro...)


----------



## André Uhres (19. Jan 2009)

stadi hat gesagt.:
			
		

> revalidate() und repaint() funktionieren leider auch nicht
> 2 Zeilen sind immer ein JLabel!


Klar, "wenn ich diese JLabels entfernen möchte, einen neuen Text hinzufügen und wieder zum Container adden",
dann hab ich wieder Zeilen mit JLabels. Das ist genau das, was du programmieren willst, und das hast du jetzt bekommen   .
Wo ist denn jetzt das Problem? Oder willst du uns verarschen? (scnr)


----------



## stadi (23. Jan 2009)

Habe jetzt mein Programm umgeschrieben auf setText()!!

funktioniert jetzt!
aber schon irgendwie komisch, dass man nichts löschen kann!!

auf jedenfall nochmal danke für alle antworten!


----------



## SlaterB (23. Jan 2009)

selbstverständlich kann man löschen, alles funktioniert perfekt von Fehlern in deinem Programm abgesehen,
z.B. dass fach[j] gar nicht im Panel drin ist sondern ein anderes JLabel mit gleichen Inhalt,

wenn nun
fach[j].setText(otherText);
funktioniert, dann ist diese These recht dünn  , 
aber irgendwas wird sich schon finden


----------

