Java - mouseDragged, rysowanie ciągłej lini

0

Cześć wszystkim!
Mam tutaj taki kod:
@Override
public void mouseDragged(MouseEvent e) {
m = true;
x1 = e.getX();
y1 = e.getY();
pkt.add(new Point(x1,y1));
System.out.println(x1+" "+ y1);
System.out.println("mouseDragged");
repaint();
}
oraz kod w metodzie paintComponent rysujący linie:
int x2,y2;
for(Point pkt: pkt){
x2 = (int) pkt.getX();
y2 = (int) pkt.getY();
g.drawLine(x2,y2,x2,y2);
g.drawLine(x2,y2+1,x2,y2+1);
g.drawLine(x2+1,y2,x2+1,y2);
g.drawLine(x2+1,y2+1,x2+1,y2+1);
}
Problem jest taki, że ciągnąc myszkę po panelu, rysowane są wybrakowane linie...
a w konsoli dostaję wartości x1 i y1 różne. Gdy ciągnę myszkę szybko, to x1 i y1 mają wartości różniące się od kolejnych x1 i y1 o np. 2,3,5,10. A kiedy ciągnę wolno, to wartości różnią się 1px(to czego oczekuję).
Czy mógłby mi ktoś wyjaśnić dlaczego tak się dzieje i co zrobić, aby tak nie było? Może istnieje jakaś metoda?
screenshot-20210505091839.png

1

Pewnie event o zmianie pozycji przychodzi co jakiś, a nie co każdy pixel. Narysuj sobie linię między poprzednikiem, a następnikiem, a nie po prostu dany punkt

0

@Tyvrel: Bardzo dziękuję za pomysł. Poszukam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1