Hallo zusammen,
ich möchte auf einem JPanel eine Linie zeichnen, die wenn man die Maus bewegt, immer von einem fest vorgegebenen Punkt direkt zur Mausposition gezeichnet wird.
Das klappt im Prinzip schon mal. Wenn ich die Methode repaint() nicht aufrufe, wird die Linie so gezeichnet wie sie sein soll, allerdings bleiben vorherige Linien (logischerweiße) erhalten so dass irgendwann ein "Stern" entsteht mit vielen Linien die vom fixen Punkt weggehen.
Sobald ich nun jedoch die Methode .repaint() aufrufe, sieht man die Linie nur wenn man die Maus bewegt (flackert auch etwas). Sobald die Maus stillsteht, ist nichts mehr von der Linie zu sehen. Ich dachte eigentlich, wenn man die repaint() Methode vor dem Zeichnen aufruft, wird das MouseDragged-Event nicht noch mal durchlaufen, solange man die Maus stillhält.
Anbei mal der Code-Ausschnitt des MouseDragged Listener Event, ist aus einem etwas größeren Programm rausgenommen:
Lasst euch bitte von den Koordinaten nicht verwirren, die stimmen soweit schon.
Vielen Dank im Vorraus und liebe Grüße,
Kaffeebohn
ich möchte auf einem JPanel eine Linie zeichnen, die wenn man die Maus bewegt, immer von einem fest vorgegebenen Punkt direkt zur Mausposition gezeichnet wird.
Das klappt im Prinzip schon mal. Wenn ich die Methode repaint() nicht aufrufe, wird die Linie so gezeichnet wie sie sein soll, allerdings bleiben vorherige Linien (logischerweiße) erhalten so dass irgendwann ein "Stern" entsteht mit vielen Linien die vom fixen Punkt weggehen.
Sobald ich nun jedoch die Methode .repaint() aufrufe, sieht man die Linie nur wenn man die Maus bewegt (flackert auch etwas). Sobald die Maus stillsteht, ist nichts mehr von der Linie zu sehen. Ich dachte eigentlich, wenn man die repaint() Methode vor dem Zeichnen aufruft, wird das MouseDragged-Event nicht noch mal durchlaufen, solange man die Maus stillhält.
Anbei mal der Code-Ausschnitt des MouseDragged Listener Event, ist aus einem etwas größeren Programm rausgenommen:
Java:
public void mouseDragged(MouseEvent e) {
// Soll eigentlich die Linien löschen die nicht mehr gebraucht werden
repaint();
getGraphics().drawLine(c1.x+(c1.width/2), c1.y+(c1.height/2), e.getPoint().x, e.getPoint().y);
}
Lasst euch bitte von den Koordinaten nicht verwirren, die stimmen soweit schon.
Vielen Dank im Vorraus und liebe Grüße,
Kaffeebohn