# Graphics-Komponente auf JPanel wird nicht angezeigt



## Ännchen (4. Sep 2009)

Hallo,

ich habe da ein Problem beim Zeichnen einer Graphics-Komponente. Ich habe eine Klasse geschrieben, in der ein Quader angelegt wird:


```
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JPanel;

public class Zeichnen extends JPanel{
	
	@Override
	public void paintComponent(Graphics g){
		super.paintComponent(g);
			
		Polygon polygon = new Polygon();
		polygon.addPoint(400, 400);
		polygon.addPoint(500, 400);
		polygon.addPoint(500, 500);
		polygon.addPoint(400, 500);
		g.drawPolygon(polygon);
		
		Polygon polygon2 = new Polygon();
		polygon2.addPoint(400, 400);
		polygon2.addPoint(410, 390);
		polygon2.addPoint(510, 390);
		polygon2.addPoint(500, 400);
		g.drawPolygon(polygon2);
		
		Polygon polygon3 = new Polygon();
		polygon3.addPoint(500, 500);
		polygon3.addPoint(510, 490);
		polygon3.addPoint(510, 390);
		polygon3.addPoint(500, 400);
		g.drawPolygon(polygon3);
	}
}
```

Die Klasse ist von JPanel abgeleitet, da ich den Quader auf ein bereits bestehendes JPanel einfügen möchte. In einer anderen Klasse erzeuge ich ein Objekt der Klasse Zeichnen. 


```
Zeichnen rekombinator = new Zeichnen();
rekombinator.setBorder(new TitledBorder("Graphik Rekombinator"));
rekombinator.setPreferredSize(new Dimension(300, 300));

p_platten2.add(rekombinator);
rekombinator.repaint();
```

Dieses adde ich auf ein weiteres JPanel, dass wiederum auf ein JPanel geaddet wird usw. bis ich alles auf dem JPanel p_haupt geaddet habe. Zum Schluss will ich dann alles auf das JFrame adden:


```
public class Eingabe extends JFrame {
	public Eingabe(){
		super("REKO-Direkt");
		
		this.setSize(1050,768);
		this.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
		this.setLocation(0,0);		
				
		this.getContentPane().add(p_haupt);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);	
	}
}
```

So, und jetzt wird mir die Graphik leider nicht angezeigt. Das Panel ist da, was man an der TitledBorder sieht, aber es ist leider leer. Ich vermute ja, dass es irgendwie daran liegt, dass ich es nicht direkt auf das JFrame adde. Wenn ich nämlich im Konstruktor Eingabe() 
	
	
	
	





```
this.getContentPane().add(rekombinator)
```
 sage, ist die Graphik da. Nur will ich sie da ja gar nicht hinhaben...

Habt ihr ne Idee wie ichs hinkriege, dass die Graphik auf dem Panel angezeigt wird? Ich verzweifle langsam. 

Liebe Grüße, Ännchen


----------



## SlaterB (4. Sep 2009)

was p_platten2 und p_haupt ist, gibt dein Code nicht wieder,
da sind alle denkbaren Fehler denkbar, Größe 0, falsches Layout, usw.


----------



## Ännchen (4. Sep 2009)

Sorry, wollte hier nicht den ganzen Code reinstellen, weil es doch recht viel ist. Hoffe das hier hilft:


```
JPanel p_platten2 = new JPanel(new FlowLayout(FlowLayout.LEFT));

JPanel p_rekombinator2 = new JPanel(new BorderLayout());
p_rekombinator2.setBorder(new TitledBorder("Rekombinator");
p_rekombinator2.add(p_platten2, BorderLayout.SOUTH);

JPanel p_geometrie = new JPanel(new FlowLayout(FlowLayout.LEFT));
p_geometrie.add(p_rekombinator2);
JScrollPane sp_geometrie = new JScrollPane(p_geometrie);

JTabbedPane tp_haupt = new TabbedPane();
tp_haupt.addTab("Geometrie", sp_geometrie);

JPanel p_haupt = new JPanel(new BorderLayout());
p_haupt.add(tp_haupt. BorderLayout.CENTER);
```

Denke aber am Layout wirds nicht liegen, da ich auf das Panel p_platten schon ein anderes Panel adde, was auch angezeigt wird. (siehe Bild beim ersten Posting)


----------



## SlaterB (4. Sep 2009)

hmm, ok, läuft doch,
die Größe 300x300 reicht nur nicht, weil deine Zeichenbefehlt in der Region 400 bis 500 agieren,
das hätte ich auch gleich sehen können


----------



## Ännchen (4. Sep 2009)

aaaahhh, wie blöd!  Super, vielen Dank!! Da hätte ich wahrscheinlich noch Tage dran gesessen, bis ich das gemerkt hätte.


----------

