# Remove Panels von JFrame



## Gast (1. Okt 2007)

Guten Abend,

ich wollte verschiedene Panels erzeugen und diese dann immer auf mein Fenster setzen. Im moment funktioniert es auch nur das alte Panel bleibt bestehen. Wie kann ich das alte löschen und das neu draufsetzen?


```
public void setPanel(ImagePanel panel){
		this.getContentPane().remove(panel);
		this.add(panel);
	}


	public void setPanel(int label){
		MakePanels mp=new MakePanels(fenster);
		switch (label) {
		case 0:fenster.setPanel(mp.make_menu());break;
		case 1:fenster.setPanel(mp.make_auswahl());break;
		default:break;
		}
	}
    public ImagePanel make_auswahl(){
		ip = new ImagePanel(1,texture);
		return ip;
	}
            class ImagePanel extends JPanel{ 
	Image image; 
    
	public ImagePanel(int nr,Image[] texture){
		this.image=texture[nr];
		this.setLayout(null);
		this.setSize(640, 480);
          setOpaque(false); 
          } 
            public void paintComponent(Graphics g){ 
    	g.drawImage(image, 0,0, this); // Erst das Bild malen 
           super.paintComponent(g); // Dann den Rest (Buttons und andere Children) 
           }
        }
```


----------



## Wildcard (1. Okt 2007)

Schau dir das CardLayout an. Wenn das nichts für dich ist, musst du den Container validieren dessen Children du veränderst.


----------



## *Hendrik (1. Okt 2007)

Zudem ist Deine Methode

```
public void setPanel(ImagePanel panel){ 
      this.getContentPane().remove(panel); 
      this.add(panel); 
   }
```
offensichtlich nicht korrekt, da Du das gleiche Panel erst entfernst und dann wieder hinzufügst. Wenn Du so arbeitest, dann solltest Du schon das "alte" Panel entfernen.


----------



## Drake (2. Okt 2007)

Und wenn man die letzen Beiträge zusammenfasst sollte so etwas bei rum kommen



```
public void setPanel(ImagePanel panel){ 
      this.getContentPane().removeAll(); 
      this.getContentPane().add(panel);

      this.getContentPane().validate();
   }
```

oder vielleicht


```
public void setPanel(ImagePanel panel){ 
      this.setContentPane(panel);

      this.getContentPane().validate();
   }
```


----------



## Gast (2. Okt 2007)

Das obere funktioniert besser, supy danke


----------



## java.jason (23. Nov 2007)

Hallo habe ein ähnliches Problem:

Meine Methode Spielfigur setzt nach einem Buttonklick eine SPielfigur auf die Spielfläche. Bevor die Figur neu gesetzt wird, muss ich die alte aber erstmal entfernen. 
Geht das auch irgendwie mit remove?


```
public void Spielfigur_einfuegen(Spielfeld_center spielfeld_center)
	{
		
	    a = setzen(wuerfeln(), position);
	    koordinaten_x = Integer.valueOf(a[0]).intValue();
	    koordinaten_y = Integer.valueOf(a[1]).intValue();
	      
	    spielfeld_center.gbc = spielfeld_center.makegbc (koordinaten_y,koordinaten_x,1,1);
	    JLabel bild2 = new JLabel(new ImageIcon ("figur1.png"));
	    spielfeld_center.gbl.setConstraints(bild2, spielfeld_center.gbc);
	    spielfeld_center.panel1.add(bild2);
	    spielfeld_center.panel1.setComponentZOrder(bild2, 0);
				
	    spielfeld_center.panel1.validate();
				
	}
```


----------

