我有一个场景,有一个按钮;按下按钮后会创建新的矩形对象。形状是可拖动的,但是只能创建最近创建的形状吗?
这是代码 -
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();
}
}
我怎么能绕过它?
答案 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()........
。
这应该是它的要点,祝你好运!