Hallo, ich habe folgenden MouseMotionListner, der mir die Achsen eines Koordinatensystems bei gedrückter Maus skalieren soll:
Das Problem ist nur, dass der sehr viele, wohl zu viele Berechnungen vornimmt und sich mein Programm immer aufhängt. Wie würde man so was effektiver gestalten?
Java:
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
setCursor(new Cursor(Cursor.NE_RESIZE_CURSOR));
startPos = (startPos == null) ? e.getPoint() : startPos;
currentPos = e.getPoint();
int distX = (currentPos.x - startPos.x) / 50;
int distY = (currentPos.y - startPos.y) / 50;
CoordinateSystemSettings.scaleX = (CoordinateSystemSettings.scaleX
+ distX > CoordinateSystemSettings.scaleMax) ? CoordinateSystemSettings.scaleMax
: CoordinateSystemSettings.scaleX + distX;
CoordinateSystemSettings.scaleX = (CoordinateSystemSettings.scaleX < CoordinateSystemSettings.scaleMin)
? CoordinateSystemSettings.scaleMin
: CoordinateSystemSettings.scaleX;
CoordinateSystemSettings.scaleY = (CoordinateSystemSettings.scaleY
+ distY > CoordinateSystemSettings.scaleY) ? CoordinateSystemSettings.scaleMax
: CoordinateSystemSettings.scaleY + distY;
CoordinateSystemSettings.scaleX = (CoordinateSystemSettings.scaleY < CoordinateSystemSettings.scaleMin)
? CoordinateSystemSettings.scaleMin
: CoordinateSystemSettings.scaleY;
repaint();
}
});
Das Problem ist nur, dass der sehr viele, wohl zu viele Berechnungen vornimmt und sich mein Programm immer aufhängt. Wie würde man so was effektiver gestalten?