Paint

Hi,
wer mein halbfertiges Programm anschauen möchte kann das hier tun:
http://dl.dropbox.com/u/13930600/T_Konto.txt

Es geht um eine Linie ich möchte gerne eine Line von oben nach unten genau in die Mitte platzieren, ich hab gelesen das das mit paint funktioniert. Kann mir jemand erklären wie das möglichst einfach geht?
so nach JFrame.drawLine(Länge:400; Position: von oben nach unten in der mitte) :smiley:

Lg Dennis

Danke schon mal im Voraus!

Hi,

ich hab dein Programm jetzt nur überflogen.
Grundsätzlich zeichnet man in der paint-Methode:
public void paint(Graphics g) {
g.drawLine(getWidth()/2, 0, 0, 400);
}
Da du allerdings Komponenten wie Textfelder auf einem Container platzierst, wird deine schöne Linie von dem Container überdeckt. Am leichtesten wäre es vermutlich eine Klasse zu schreiben, die von JPanel erbt, in die du reinzeichnest.

Grüße, Keks

Hi,
Du hast recht mit der Paint-Methode war nur noch der Strich zusehen :smiley:
Aber wie mache ich das den jetzt? Gibt es nicht so etwas, um das einfach so hinein setzen zu können?
So nach dem Motto:

private JLinie linie = new JLinie();
linie.setBounds(50, 50, 50, 100); //xy-Anfang und xy-Ende
cp.add(linie);

Lg Dennis

Hallo,

am einfachsten geht es, wenn du die paint-Methode deines Containers überschreibst.

Bsp.:

@Override
public void paint(Graphics g) {
**super.paint(g);**
 g.drawLine(getWidth() / 2, 0, getWidth() / 2, getHeight());
}

Die Zeile

super.paint(g);

sorgt dafür, dass nicht nur die Linie sondern auch die anderen Komponenten gezeichnet werden und dann die Linie.

Gruß, sagitta1793

Hallo Denni,

also ich muss sagen der Quelltext ist recht…hmm chaotisch :smiley:
aber das kommt mit der Zeit… mein erstes Programm sah auch nicht viel besser aus.
Arbeitest du mit Eclipse?
Naja… zu deiner Frage
Man kann so eine Linie theoretisch als Objekt erstellen aber da kommst du um JComponent nicht drumherum:

public class Linie extends JComponent{
 public void paintComponent(Graphics g){
 //Zeichnet eine Linie von Mitte-Oben nach Mitte-Unten
 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());
 }
}

Du kannst natürlich auch ne anonyme Klasse draus machen:

JComponent linie = new JComponent(){
 public void paintComponent(Graphics g){
 //Zeichnet eine Linie von Mitte-Oben nach Mitte-Unten
 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());
 }
};

Aber das bleibt dir überlassen.

Übrigens, wenn du ein Fenster auf dem Bildschirm zentrieren willst, musst du nicht ungedingt selbst den ganzen Kram berechnetn. Du kannst auch einfach setLocationRelativeTo(null) aufrufen und dadurch passiert das gleiche.
Und ich würde dir nahe legen, einen Layoutmanager zu benutzen, weil das auf Dauer angenehmer ist als alles selbst zu machen.
Schau dir dazu das GridBagLayout mal an :wink:

Gruß
Swen

Hi,
danke für die Antwort habe es aber schon lengst gelöst!
Der caotische Code ist so gewollt hatte Gründe die ich später erst hinzugefügt habe und passt schon :smiley:

Übrigens, wenn du ein Fenster auf dem Bildschirm zentrieren willst, musst du nicht ungedingt selbst den ganzen Kram berechnetn. Du kannst auch einfach setLocationRelativeTo(null) aufrufen und dadurch passiert das gleiche.

Wusste ich schon aber mach ich aus Gewohnheit!

Und ich würde dir nahe legen, einen Layoutmanager zu benutzen, weil das auf Dauer angenehmer ist als alles selbst zu machen.

Ne find ich nicht mache ich gerne so :smiley:

Lg Denni