Ich habe einen Bereich (1440x800) und einen Knoten (400x300), die ich innerhalb dieses Bereichs verschieben muss. Für Pane habe ich StackPane genommen und für Node habe ich VBox genommen.Was ist der optimale Weg um absolut positionierten Knoten in JavaFX zu verschieben?
Dies ist der Controller, der den Knoten verschiebt.
public class Controller extends AbstractController {
/**
* Mouse pressed X position.
*/
private double mousePressedX;
/**
* Mouse pressed Y position.
*/
private double mousePressedY;
/**
* Insets that were when user pressed mouse.
*/
private Insets mousePressedInsets;
/**
* Mouse pressed handler.
* @param event
*/
@FXML
public void handleTitlePaneMousePressed(final MouseEvent event) {
Node node = (Node) getView().getFxView();
mousePressedX = event.getScreenX();
mousePressedY = event.getScreenY();
mousePressedInsets = StackPane.getMargin(node);
if (mousePressedInsets == null) {
mousePressedInsets = new Insets(0, 0, 0, 0);
}
}
/**
* Moused dragged handler.
* @param event
*/
@FXML
public void handleTitlePaneMouseDragged(final MouseEvent event) {
Node node = (Node) getView().getFxView();
double deltaX = event.getScreenX() - mousePressedX;
double deltaY = event.getScreenY() - mousePressedY;
Insets newInsets =
new Insets(mousePressedInsets.getTop() + deltaY, 0, 0, mousePressedInsets.getLeft() + deltaX);
StackPane.setMargin(node, newInsets);
}
}
Wenn Benutzer klickt auf den Titel des Knotens gedrückt dann X und Y werden gespeichert und in Moused dragged handler
verwendet. Der Code funktioniert so, wie ich es brauche. Das einzige Problem ist, dass zwischen Mausbewegung und Knotenmodus eine kleine Verzögerung besteht.
Ich habe versucht, die folgenden Einstellungen es JVM
-Djavafx.animation.fullspeed=true
-Dprism.vsync=false
Aber es half nicht an, vielleicht weil ich Linux verwenden - nicht kennen.
Gibt es eine weitere optimale Möglichkeit, absolut positionierten Knoten in JavaFX zu verschieben?
Verwenden Sie 'StackPane' niemals, wenn Sie' Node's verschieben müssen. – Sedrick
https://stackoverflow.com/questions/10682107/correct-way-to-move-a-node-by-dragging-in-javafx-2 – Sedrick