【发布时间】:2015-10-17 19:44:23
【问题描述】:
我一直在尝试制作一个显示圆圈并允许您使用按钮移动它的程序,但我无法弄清楚如何告诉 Java 当您按下某个按钮时移动圆圈的方向。我已经尝试过 setX 和 setY 但显然它们不是 Circle 原生的。到目前为止,这是我所得到的:
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class Ball extends Application {
private Circle circle = new Circle();
@Override
public void start(Stage primaryStage) {
HBox pane = new HBox();
pane.setSpacing(10);
pane.setAlignment(Pos.CENTER);
Button btUp = new Button("UP");
Button btDown = new Button("DOWN");
Button btLeft = new Button("LEFT");
Button btRight = new Button("RIGHT");
pane.getChildren().add(btUp);
pane.getChildren().add(btDown);
pane.getChildren().add(btRight);
pane.getChildren().add(btLeft);
btUp.setOnAction(e -> circle.setY(circle.getY() - 10));
btDown.setOnAction(e -> circle.setY(circle.getY() + 10));
btLeft.setOnAction(e -> circle.setX(circle.getX() - 10));
btRight.setOnAction(e -> circle.setX(circle.getX() + 10));
BorderPane borderPane = new BorderPane();
borderPane.setCenter(circle);
borderPane.setBottom(pane);
BorderPane.setAlignment(pane, Pos.CENTER);
Scene scene = new Scene(borderPane, 200, 200);
primaryStage.setTitle("Ball"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show();
circle.requestFocus();
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】:
-
考虑将 [javafx] 标签添加到您的标签列表中,并更好地谈论 javafx 而不是 java,因为有多种方式可能会误解这个问题。
-
使用 setCenterX(), setCenterY()
-
这是Moving shapes on a JavaFX Canvas 的解决方案。如果您使用场景图而不是画布(如您的问题中所示,也是一种完全有效的方法),则解决方案将略有不同(目前我没有现成的示例)。
标签: java javafx shapes direction