paint, JPanel und Java2D

girl2005

Erfahrenes Mitglied
Hallo,

ich erstelle eine Linie auf einem JPanel. die Frage ist wie kann ich die Stellung und die Dimension der Linie in dem JPanel ändern?
 
Ich gehe davon aus, dass Ihre Klasse JPanel erbt .

1.Schritt:

int x1,y1,x2,y2; // dynamische Variablen deklarieren
...
// die Zeilen in action-bezogenem Zweig platzieren( auf keinem Fall in paint()-Methode)
x1=100;y1=100;x2=200;y2=200;//neue Werte zuweisen
repaint(); // der Befehl aktualisiert grafischer Inhalt
...
2.Schritt:
...
public void paint(Graphics g) {
...
g.drawLine( x1, y1, x2, y2); // Methode soll keine feste Parameter haben
// z.B. (100,100,200,200).
...
}
___________________________________________________-
Nun jetzt zur zweite Frage: Dimension. Etwa Liniendicke?

drawLine-Befehl mehrmals aufrufen mit versetzen Werten,
Orientierung kann man dann auch wählbar machen(mit '+i' oder '-i' ):
//definieren
drawMeineDimensionalLine(this,3,x1,y1,x2,y2);//liegt im paint()
//deklarieren
private void drawMeineDimensionalLine( Graphics g, int dicke, int x1, int y1, int x2, int y2){
for ( int i=0; i<dicke; i++)g.drawLine( x1+i, y1, x2+i, y2);//Orientierung OST
}
 
Zuletzt bearbeitet:
Hallo,

vielen Danke für die Antwort. Das Problem ist.. ich habe ein JPanel erstellt, worauf ich einiges gezeichnet habe. wenn ich das Panel zu einem JFrame addiere, wo ich Gridbaglayout als Layout benutze, ist ein Teil vom Panel unsichtbar. weißt du vielleicht woran es liegen könnte?
 
erstmal sollte das zeichnen in der paintComponent Methode aufgerufen werden:
Code:
protected void paintComponent( Graphics gra ) {
   super.paintComponent( gra );
   gra.drawLine( x1, y1, x2, y2);
}

Weiter: Vllt hast du dem Panel keine Größe mitgeben? kannst im Konstruktor ja mal ein
Code:
   setPreferredSize( new Dimension( breite, höhe ) );
machen, wenn die Breite und Höhe stimmen, sollte auch nichts abgeschnitten werden
 
hallo,

ich weiß nicht nicht genau was du mit ..Breite und Höhe stimmen..meinst.
ich benutze prefferedsize aber trotzdem bleibt ds gleiche Problem
 
hallo,

ich weiß nicht nicht genau was du mit ..Breite und Höhe stimmen..meinst.
ich benutze prefferedsize aber trotzdem bleibt ds gleiche Problem

Schicke doch mal ein Hardcopy, (ein Bild sagt manchmal mehr als 1000 Worte)
momentan nehme ich an(erate ich) dass Dein darzustellendes Bild/Zeichnung größer ist als der Platz, dem ihm gegeben wird, dafür gäbe es die Möglichkeit ein Scroll-Panel zu verwenden, so dass der Benutzer zwar Ausschnittsweise sieht, aber halt scrollen kann. Es könnte aber auch sein, dass Dein Einbetten im GridBag-Layout noch nicht so ist, wie Du es gerne haben möchtest.
 
Zurück