1
表示オブジェクトを移動して回転しようとしています。しかし、ドラッグして回転させたオブジェクトは、古い場所で定義されます。マウスでオブジェクトをドラッグする
オブジェクト上にマウスカーソルが移動すると、マウスカーソルが変化します。
私が間違っていることを教えてください。
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);
}
}
座標数値は変更されません。 System.out.println(selected); ** Circle [centerX = 250.0、centerY = 250.0、radius = 50.0、fill = 0x000000ff] ** –
'translateX'と' translateY'を使用してノードを移動すると、もちろん座標は変更されません。 – fabian
ありがとうございます。どのように座標に作品を移動するには? –