題目:編寫一個程序,在面板上移動小球。應該定義一個面板類來顯示小球,并提供向上下左右移動小球的方法。請進行邊界檢查以防止小球移動到視線之外。
問題:我寫的程序可以運行但是無法顯示小球的移動,如果將移動改為改變小球顏色則可以顯示,檢查許久也檢查不到問題在哪,所以貼上來問問大佬們,問題出在哪里?應該如何改?
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
public class MoveBall_3 extends Application{ private CirclePane circlePane = new CirclePane( 250 , 250 ); public static void main( String [] args) { Application.launch(args); } public void start(Stage primaryStage) throws Exception { Button bt1 = new Button( "Left" ); Button bt2 = new Button( "Right" ); Button bt3 = new Button( "Up" ); Button bt4 = new Button( "Down" ); bt1.setOnAction( new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent event) { // TODO 自動生成的方法存根 circlePane.moveLeft(); } }); bt2.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // TODO 自動生成的方法存根 circlePane.moveRight(); } }); bt3.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // TODO 自動生成的方法存根 circlePane.moveUp(); } }); bt4.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // TODO 自動生成的方法存根 circlePane.moveDown(); } }); FlowPane pane2 = new FlowPane(); pane2.getChildren().addAll(bt1,bt2,bt3,bt4); circlePane.getChildren().addAll(pane2); Scene scene = new Scene(circlePane, 500 , 500 ); primaryStage.setTitle( "MoveBall" ); primaryStage.setScene(scene); primaryStage.show(); } } class CirclePane extends StackPane{ private Circle circle = new Circle( 250 , 250 , 50 ); public CirclePane() { getChildren().add(circle); circle.setStroke(Color.BLACK); circle.setFill(Color.WHITE); } public CirclePane(double a,double b) { getChildren().add(circle); circle.setCenterX(a); circle.setCenterY(b); circle.setStroke(Color.BLACK); circle.setFill(Color.WHITE); } public void moveLeft() { if (circle.getCenterX() -50 -15 >= 0 ) { circle.setCenterX(circle.getCenterX() -15 ); circle.setCenterY(circle.getCenterY()); } else { circle.setCenterX( 50 ); circle.setCenterY(circle.getCenterY()); } } public void moveRight() { if (circle.getCenterX()+ 50 + 15 <= 500 ) { circle.setCenterX(circle.getCenterX()+ 15 ); circle.setCenterY(circle.getCenterY()); } else { circle.setCenterX( 450 ); circle.setCenterY(circle.getCenterY()); } } public void moveUp() { if (circle.getCenterY() -50 -15 >= 0 ) { circle.setCenterY(circle.getCenterY() -15 ); circle.setCenterX(circle.getCenterX()); } else { circle.setCenterY( 50 ); circle.setCenterX(circle.getCenterX()); } } public void moveDown() { if (circle.getCenterY()+ 50 + 15 <= 500 ) { circle.setCenterY(circle.getCenterY()+ 15 ); circle.setCenterX(circle.getCenterX()); } else { circle.setCenterY( 450 ); circle.setCenterX(circle.getCenterX()); } } } |
到此這篇關于利用javaFX實現移動一個小球的示例代碼的文章就介紹到這了,更多相關javaFX 移動小球內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_43461540/article/details/85631033