# paintComponent



## aYlien (23. Feb 2011)

Hallo ich möchte ein großes "X" mit zwei linien malen. Wie bekomme ich die Linien auf meine JFrame drauf?


```
public class blub extends JFrame {

    public blub() {
        setSize(500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.WHITE);
        setVisible(true);
    }

    public void paintComponent(Graphics g){
        super.paintComponents(g);
        g.drawLine(0, 0, getWidth(), getHeight());
        g.drawLine(getWidth(), 0, 0, getHeight());
    }

}
```


Oder kann ich nur auf einem JPanel malen?!


----------



## Tomate_Salat (23. Feb 2011)

[java=11]super.paintComponents(g);[/code]
ich würde hier die paintComponent aufrufen.

Ich habe noch nie versucht auf einem JFrame direkt zu zeichnen, wie du es tust. Empfehlenswerter ist JPanel(oder JComponent). Der Grund wieso du hier kein Erfolg erziehlen wirst ist wohl der, dass deine "Zeichnung" vom [c]ContentPane[/c] überdeckt wird. 

Nimm also (wie du schon erkannt hast) ein JPanel, damit sollte es funktionieren.

-----
btw: Klassen schreibt man UpperCamelCase ;-)

MFG

Tomate_Salat


----------



## xehpuk (23. Feb 2011)

Setz mal ein [c]@Override[/c] vor die Methode und du wirst sehen, dass sie nichts überschreibt. 
Versuch mal, auf dem ContentPane zu malen. (Anonyme Klasse von JPanel erstellen und dessen paintComponent() überschreiben und schließlich dem JFrame als ContentPane setzen.)


----------



## aYlien (23. Feb 2011)

also mit dem Label klappt es sehr gut... 

gut danke für alles!


----------



## SlaterB (23. Feb 2011)

in jedem Fall ist zu empfehlen, vor dem Zeichnen eine Betriebsanleitung zu lesen?!
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 17 Grafikprogrammierung

```
17 Grafikprogrammierung
	Pfeil 	17.1 Grundlegendes zum Zeichnen
		Pfeil 	17.1.1 Die paint()-Methode für das AWT-Frame
		Pfeil 	17.1.2 Zeichnen von Inhalten mit JFrame
```
beschäftigt sich ziemlich genau mit diesen Fragen


> Grundsätzlich ließe sich auch von JFrame eine Unterklasse bilden und paint()  überschreiben, doch ist das nicht der übliche Weg. Stattdessen wählen wir einen anderen Ansatz, der sogar unter AWT eine gute Lösung ist. Wir bilden eine eigene Komponente, eine Unterklasse von JPanel [..]


----------

