![](/img/trans.png)
[英]Trying to move a rectangle with the help of arrow keys in Core Java using JFrames
[英]Move a circle using arrow keys - Java
我現在正在嘗試JavaFX,教自己如何使用箭頭鍵移動文本和項目。 我編寫了一個程序,如果按下箭頭鍵,該程序僅在舞台上移動文本。
我想繞着窗格而不是文字繞圈移動。 要使用箭頭鍵移動圓圈,必須進行哪些更改?
public void start(Stage primaryStage) {
Pane pane = new Pane();
int dx = 50;
int dy = 50;
int radius = 125;
Circle circle = new Circle(radius,dx,dy);
Text text = new Text(20,20,"HI");
circle.setFill(Color.WHITE);
circle.setStroke(Color.BLACK);
pane.getChildren().addAll(circle, text);
circle.setOnKeyPressed(e -> {
switch(e.getCode()) {
case DOWN: text.setY(text.getY() + 10);
break;
case UP: text.setY(text.getY() - 10);
break;
case LEFT: text.setX(text.getX() - 10);
break;
case RIGHT: text.setX(text.getX() + 10);
break;
default:
if(Character.isLetterOrDigit(e.getText().charAt(0)))
text.setText(e.getText());
break;
}
});
Scene scene = new Scene(pane, 250, 200);
primaryStage.setTitle("Arrow Keys");
primaryStage.setScene(scene);
primaryStage.show();
text.requestFocus();
}
scene.setOnKeyPressed(e -> {
switch (e.getCode()) {
case DOWN:
circle.setCenterY(circle.getCenterY() + 10);
break;
case UP:
circle.setCenterY(circle.getCenterY() - 10);
break;
case LEFT:
circle.setCenterX(circle.getCenterX() - 10);
break;
case RIGHT:
circle.setCenterX(circle.getCenterX() + 10);
break;
}
});
就個人而言,我將更改您在哪里聆聽按鍵。 我將其放在“窗格”上,因為在此示例中始終將其作為焦點。 除此之外,如果您不希望最后一個停留,則可能必須刪除並閱讀圓圈,我不在電腦旁,所以我無法確認這一點,但是結果代碼如下所示。
public void start(Stage primaryStage) {
Pane pane = new Pane();
int dx = 50;
int dy = 50;
int radius = 125;
Circle circle = new Circle(radius,dx,dy);
Text text = new Text(20,20,"HI");
circle.setFill(Color.WHITE);
circle.setStroke(Color.BLACK);
pane.getChildren().addAll(circle, text);
pane.setOnKeyPressed(e -> {
pane.getChildren().remove(circle);
switch(e.getCode()) {
case DOWN: circle.setCenterY(circle.getCenterY() + 10);
break;
case UP: circle.setCenterY(circle.getCenterY() - 10);
break;
case LEFT: circle.setCenterX(circle.getCenterX() + 10);
break;
case RIGHT: circle.setCenterX(circle.getCenterX() - 10);
break;
}
pane.getChildren().add(circle);
});
Scene scene = new Scene(pane, 250, 200);
primaryStage.setTitle("Arrow Keys");
primaryStage.setScene(scene);
primaryStage.show();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.