# Component aus Container entfernen bzw. austauschen.



## Randall (13. Jun 2004)

Folgendes Problem: Ich habe in einem JFrame eine Ansicht mit einer JTable, zwei JTextFields und ein paar JButtons. Nun kann zwischen den Ansichten gewechselt werden. 

Mit der Methode 


```
contentPane.remove(1);
```

kann ich ja eine Componente entfernen. Wenn ich das wie hier ueber den Index der Componente mache, und der entsprechende Menupunkt z.B. mehrmals angeklickt wird, dann verschwindet (ungewollt) eine Componente nach der anderen, da ja der Index dann geändert hat, weil eine Componente vorher schon entfernt wurde. 

Kann ich auf die Componente auch mit dem Namen zugreifen? Habe darüber nichts gefunden. 

Ich hoffe, ich habe mich einigermassen verständlich ausdrücken können....


----------



## bummerland (13. Jun 2004)

contentPane.remove(Component)


----------



## L-ectron-X (13. Jun 2004)

Da muss ich gleich noch mal nach haken: Kann man das Gleiche nicht auch mit setVisible(false) erreichen?
Was ist der Unterschied zwischen remove() und setVisible(false) in diesem Fall?


----------



## Randall (13. Jun 2004)

Ich hab z.B. einen JButton


```
notes = new JButton("Notizen");
gbc = makegbc(0,4,1,1,0.1,0.1);
gbc.fill = GridBagConstraints.NONE;
contentPane.add(notes, gbc);
notes.addActionListener(this);
```

wenn ich nun in einer Methode, die durch das klicken auf einen Menupunkt ausgelöst wird, 


```
contentPane.remove(notes);
```

habe, dann passiert gar nix. ???


----------



## Roar (13. Jun 2004)

du musst danach den container validaten mit validate() oder revalidate()


----------



## L-ectron-X (13. Jun 2004)

@Roar: Kannst Du meine Frage auch beantworten?


----------



## Roar (13. Jun 2004)

remove entfernt den ckomponent aus dem container, setVisible(false); macht ihn nur unsichtbar. ob das visuell irgendwelche unterschiede hat weiß ich nicht, aber jedenfalls wird der component bei remove() aus dem objekt des containers ganz entfernt.


----------

