使用按钮创建后在场景周围移动多个矩形

时间:2016-04-08 17:43:56

标签: java javafx-8

我有一个场景,有一个按钮;按下按钮后会创建新的矩形对象。形状是可拖动的,但是只能创建最近创建的形状吗?

这是代码 -

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class RectanglesCirclesDrawing extends Application
{
    Rectangle rect;
    Button button;
    public static void main(String [] args)
    {
         launch(args);
    }
    public void start(Stage primaryStage)
    {
        Pane root = new Pane();
        button = new Button("press me to create a new rectangle!");

        // Creating a new rectangle
        button.setOnAction(e ->{
            rect = new Rectangle();
            rect.setHeight(200);
            rect.setWidth(400);
            root.getChildren().add(rect);
        });

        root.setOnMouseDragged(e ->{
            rect.setX(e.getX());
            rect.setY(e.getY());
        });


        root.getChildren().addAll(button);
        Scene scene = new Scene(root,800,800);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Creating Shapes");
        primaryStage.show();
    }
}

我怎么能绕过它?

1 个答案:

答案 0 :(得分:1)

嗯......你基本上是在打电话

  root.setOnMouseDragged(e ->{
        rect.setX(e.getX());
        rect.setY(e.getY());
    });

所以如果你拖动根它会将矩形x和y设置为e的x和y,所以就像你通过点击它拖动一个矩形,但你真的点击你的根,这意味着你可以点击任何地方在你的舞台上,它会拖动矩形。

问题是

button.setOnAction(e ->{
    rect = new Rectangle();
   ...

每次都将rect设置为一个新的Rectangle,然后你试图只移动那个矩形。

在创建下一个Rect对象之前,您要做的是在某个时刻添加rect.setOnMouseDragged()........

这应该是它的要点,祝你好运!