Hallo,
ich schreibe gerade eine Java Applikation, bei der ich gezeichnete Punkte mittels gedrückter Maustaste verschieben möchte.
Dazu verwende ich die Methode mousedragged, die dann eine weitere Methode "changePoint" aufruft, die zuerst nachsieht, ob ich in der Nähe eines bestehenden Punktes geklickt habe, und erst dann weitere Berechnungen ausführt...usw.
Das funktioniert soweit auch, das Problem ist nur, wenn ich den Punkt zu schnell bewege, dann "verliert" er sozusagen den zu bewegenden Punkt.
Halte ich die Maustaste weiter gedrückt und fahre zurück zur letzten Position, dann kann ich den Punkt weiterbewegen.
Hat jemand eine Idee, wie ich das Problem beheben kann?
Code-Auszug:
ich schreibe gerade eine Java Applikation, bei der ich gezeichnete Punkte mittels gedrückter Maustaste verschieben möchte.
Dazu verwende ich die Methode mousedragged, die dann eine weitere Methode "changePoint" aufruft, die zuerst nachsieht, ob ich in der Nähe eines bestehenden Punktes geklickt habe, und erst dann weitere Berechnungen ausführt...usw.
Das funktioniert soweit auch, das Problem ist nur, wenn ich den Punkt zu schnell bewege, dann "verliert" er sozusagen den zu bewegenden Punkt.
Halte ich die Maustaste weiter gedrückt und fahre zurück zur letzten Position, dann kann ich den Punkt weiterbewegen.
Hat jemand eine Idee, wie ich das Problem beheben kann?
Code-Auszug:
Code:
public synchronized void mouseDragged(MouseEvent event)
{
m_ClickX = event.getX();
m_ClickY = event.getY();
System.out.println("drag");
m_Canvas.changePoint(m_ClickX,m_ClickY);
}
Code:
public synchronized boolean changePoint(int PosX, int PosY) {
m_Point = new PointCP(PosX,PosY);
System.out.println("drag: "+PosX+" "+PosY);
if (m_PointList.size()>3 && m_CHpoints>3) { // remove is only allowed, when a minimum of 3 points left
for (int i=0;i<m_PointList.size();i++) {
for (int a=-4;a<=4;a++) {
for (int b=-4;b<=4;b++){
if(m_Point.getX()+a==((PointCP)m_PointList.get(i)).getX() &&
m_Point.getY()+b==((PointCP)m_PointList.get(i)).getY()) {
System.out.println("drag");
((PointCP)m_PointList.get(i)).setX(m_Point.getX());
((PointCP)m_PointList.get(i)).setY(m_Point.getY());
SEC_CHull();
repaint(); // repaints the JCanvas
break;
}
}
}
}
}