Ich versuche, alle sichtbaren Objekte zu bewegen und zu drehen. Aber nach dem Ziehen und Drehen werden Objekte an ihren alten Orten definiert.Objekte mit der Maus ziehen
Der Mauszeiger ändert sich, wenn er sich über dem Objekt befindet.
Sag mir, was ich falsch mache?
public class Main extends Application {
Point2D offset;
Shape selected;
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
Rectangle rect = new Rectangle(40, 20, 50, 100);
rect.setRotate(90);
Ellipse ellipse = new Ellipse(450, 450, 50, 25);
ellipse.setRotate(45);
Circle circle = new Circle(250, 250, 50);
root.getChildren().addAll(rect, ellipse, circle);
root.setOnMousePressed(e-> {
offset = new Point2D(e.getX(), e.getY());
e.consume();
});
root.setOnMouseMoved(e-> {
for(Node node: root.getChildren()){
if(node.contains(e.getX(), e.getY())){
selected = (Shape) node;
root.setCursor(Cursor.HAND);
break;
}else{
selected = null;
root.setCursor(Cursor.DEFAULT);
}
}
e.consume();
});
root.setOnMouseDragged(e-> {
if(selected != null){
selected.setTranslateX(e.getX() - offset.getX());
selected.setTranslateY(e.getY() - offset.getY());
}
e.consume();
});
Scene scene = new Scene(root,500,500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Koordinatenangaben ändern sich nicht. System.out.println (ausgewählt); ** Kreis [centerX = 250.0, centerY = 250.0, radius = 50.0, fill = 0x000000ff] ** –
Natürlich ändern sich die Koordinaten nicht, wenn Sie den Knoten mit 'translateX' und' translateY' verschieben. – fabian
Vielen Dank für Ihre Antwort. Wie verschiebe ich die Teile auf den Koordinaten? –