# Panel in Panel zeichnen



## McCoy (19. Okt 2009)

Hoi,
ich habe ein kleines Verständnisproblem.

Ich will in den roten Panel einen Kreis zeichnen lasssen, doch leider passiert das nicht. Stattdessen wird mir diese kleine Viereck gezeichnet. Obwohl ich schon hier und da im code herumgespielt habe, also Werte wie setColor geändert, verändert sich nichts und ich verstehe nicht warum.

Vermute, dass mein "Problem" mit dem BorderLayout zusammenhängt. Über Hinweise wäre ich schon dankbar.


```
public class MyOval extends JFrame{
	
	private JPanel panel,circle;
	private JSlider slider;
	
	public Aufgabe2(String titel){	
		super(titel);
		setLayout(new BorderLayout());

		panel = new JPanel();
		panel.setBackground(new Color(255,0,0));
		add(panel);

		slider = new JSlider();
		add(slider, BorderLayout.SOUTH);
				
		circle = new JPanel();
		panel.add(circle);	
	}
	
	public class circle extends JPanel{		
		public void paintComponent(Graphics g){
			super.paintComponent(g);
			g.setColor(new Color(0,0,0));
			g.fillOval(10,10,50,50);
		}	
	}
	
	[...]
}
```


----------



## eRaaaa (19. Okt 2009)

hi, 
2 kleine dinge die mir beim überfliegen aufgefallen sind:

1.)  public Aufgabe2(String titel){  ....} <-- dieser konstruktor in der klasse MyOval ???:L

2.)  circle = new JPanel();  <-- du erstellst ja ein normales jpanel, anstelle deiner circle-klasse



> Vermute, dass mein "Problem" mit dem BorderLayout zusammenhängt.



bedenke, dass das borderlayout zu dem frame gehört! das 1. panel hat per default ein flowlayout


----------



## McCoy (19. Okt 2009)

1.) Habe den Klassennamen beim Einfügen abgeändert und den Konstruktor einfach vergessen
2.) *Danke *für den Hinweis, habe ich gleich geändert. 

So ich hab's jetzt etwas vereinfacht und es funktioniert auch so


```
private Circle circle;
	private JSlider slider;
	
	private MyOval (String titel){	
		super(titel);
		setLayout(new BorderLayout());	
		circle = new Circle();
		add(circle);
		
		slider = new JSlider();
		add(slider, BorderLayout.SOUTH);
	}
	
	public class Circle extends JPanel{			
		private Circle(){
			setBackground(Color.green);
		}
		
		public void paintComponent(Graphics g){
			super.paintComponent(g);
			g.setColor(new Color(0,0,0));
			g.fillOval(10,10,50,50);
		}
```

Hmn... ich weiß zwar immer noch nicht warum das davor nicht so funktioniert hat wie es sollte - werde da wohl noch etwas herumspielen müssen.


----------

