最终效果
鼠标点击对应的按键能够控制小球的移动,通过键盘的方向键也能控制小球的移动。
实现代码
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
.Pane
;
import javafx
.scene
.layout
.VBox
;
import javafx
.scene
.paint
.Color
;
import javafx
.scene
.shape
.Circle
;
import javafx
.stage
.Stage
;
public class Main extends Application {
@Override
public void start(Stage primaryStage
) {
BorderPane borderPane
= new BorderPane();
Pane pane
= new Pane();
VBox vbox
= new VBox();
vbox
.setSpacing(30);
vbox
.setAlignment(Pos
.CENTER
);
Button bt1
= new Button("向左");
Button bt2
= new Button("向右");
Button bt3
= new Button("向上");
Button bt4
= new Button("向下");
Circle circle
= new Circle();
circle
.setCenterX(200);
circle
.setCenterY(200);
circle
.setRadius(50);
circle
.setStroke(Color
.BLACK
);
circle
.setFill(Color
.GREEN
);
vbox
.getChildren().addAll(bt1
, bt2
, bt3
, bt4
);
pane
.getChildren().add(circle
);
borderPane
.setCenter(pane
);
borderPane
.setRight(vbox
);
bt1
.setOnMouseClicked(e
-> {
circle
.setCenterX(circle
.getCenterX() - 5);
});
bt2
.setOnMouseClicked(e
-> {
circle
.setCenterX(circle
.getCenterX() + 5);
});
bt3
.setOnMouseClicked(e
-> {
circle
.setCenterY(circle
.getCenterY() - 5);
});
bt4
.setOnMouseClicked(e
-> {
circle
.setCenterY(circle
.getCenterY() + 5);
});
borderPane
.setOnKeyReleased(e
-> {
switch (e
.getCode()) {
case DOWN
: circle
.setCenterY(circle
.getCenterY() + 5); break;
case UP
: circle
.setCenterY(circle
.getCenterY() - 5); break;
case LEFT
: circle
.setCenterX(circle
.getCenterX() - 5); break;
case RIGHT
: circle
.setCenterX(circle
.getCenterX() + 5); break;
}
});
Scene scene
= new Scene(borderPane
, 400, 400);
primaryStage
.setTitle("byack");
primaryStage
.setScene(scene
);
primaryStage
.show();
}
}
感想
初学JavaFx,还是遇见不少的问题,这里做一个简单的记录,方便以后复习。
转载请注明原文地址: https://mac.8miu.com/read-507062.html