JavaFX Node verschieben

Kusarr

Software-Overclocker(in)
Servus,
muss so ein Zeichenprogramm machen (Uni) un häng grade beim verschieben einer Figure.

Code:
@Override
public void startMoveFigure(Node node, double xPos, double yPos) {
          node.relocate(xPos, yPos);
}

public void workMoveFigure(Node node, double xPos, double yPos) {        
          node.relocate(xPos, yPos);
}

Das Problem ist, dass sobald ich irgendwo auf die gezeichnete Figur klicke, die Figur auf die Figur-Koordinate x0|y0 springt. Aber die Figure soll natürlich nicht wegspringen sondern ich will die figur da "anfassen" und bewegen, wo ich nun mal hinklicke.
Im folgenden Bild sieht man denk ich was ich meine. roter Pfeil symbolisiert mein Mausklick:
failure.png

Wie bekomm ich das hin?
 
Zuletzt bearbeitet:
Eventuell einfach die Position der Maus über dem Rechteck bestimmen und dann von den Koordinaten, die an die relocate-Methode übergeben werden, abziehen?

Alternativ beim Beginn des Verschiebens, also wenn die Maustaste angeklickt wird, die Startposition von Maus und Rechteck merken und dann beim Bewegen der Maus die Differenz zur Ursprungsposition der Maus zur Uhrsprungsposition des Rechtecks addieren und diesem zuweisen.
 
Zuletzt bearbeitet:
ja gut so n etwa war mir das iwo schon klar. aber ich komm nich dahinter, wie ich das da jetz schreiben soll. Das mit JavaFX n so is für mich halt alles neu. Keine Ahnung, welche methode von node ich da benutzen muss.
 
mein Problem ist, dass ich die x-Position der Figur einfach nicht auslesen kann.

Code:
@Override
    public void startMoveFigure(Node node, double xPos, double yPos) {
        differenceX = xPos - node.getLayoutX();
        differenceY = yPos - node.getLayoutY();
    }




    @Override
    public void workMoveFigure(Node node, double xPos, double yPos) {


        node.relocate(xPos - differenceX, yPos - differenceY);
    }

node.getLayoutX() gibt immer 0 zurück. dabei steht, wenn ich mit der Maus über "node" gehe, dass es ein Rechteck ist mit den korrekten Werte der x,y-Posi und der Höhe und Breite ..
Warum kann ich diese werte nicht auslesen? falsche Methode?

EDIT:
habs endlich :hail:
Code:
	@Override
	public void startMoveFigure(Node node, double xPos, double yPos) {
		differenceX = xPos - node.getBoundsInParent().getMinX();
		differenceY = yPos - node.getBoundsInParent().getMinY();
	}
 
Zuletzt bearbeitet:
Zurück