gpt4 book ai didi

java - 使用 Scanner 和 JavaFX Stage 从键盘获取输入

转载 作者:行者123 更新时间:2023-12-01 13:56:21 24 4
gpt4 key购买 nike

我的应用程序有问题。当我打开应用程序输入 xAxis 变量时,我必须关注我的“终端”。

我想要发生的是,当我专注于舞台时,我仍然可以输入我的变量。

(我突出显示的地方就是我要重点关注的地方)问题截图:/image/r1RAp.png (我没有足够的声誉来发布屏幕截图)

此外,一些有关“不响应”的帮助可能会有所帮助,但这不会对程序产生太大影响。

代码如下:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package gamefx;

import java.util.Scanner;
import javafx.animation.Animation;
import javafx.animation.AnimationTimer;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class GameFX extends Application {

public Image img = new Image("Block1.png");
public ImageView image = new ImageView(img);
public int yAxis = -300;
public int xAxis = 0;
public TranslateTransition tt = new TranslateTransition(Duration.millis(5000), image);
public Scanner sn = new Scanner(System.in);
public String ifelse;

public void spriteAnimation(){
tt.setByY(yAxis);
tt.setCycleCount(1);
tt.play();
}
public void getMove(){

ifelse = sn.nextLine();
switch (ifelse) {
case "d":
rightMove();
System.out.print("Move Right");
break;
case "a":
leftMove();
System.out.print("Move left");
break;
}

}

public int leftMove(){
xAxis = -100;
return xAxis;

}
public int rightMove(){
xAxis = 100;
return xAxis;
}
@Override
public void start(Stage primaryStage) throws InterruptedException{
primaryStage.setTitle("Game");

StackPane stckp1 = new StackPane();
Scene scn = new Scene(stckp1, 700, 700);

primaryStage.show();
getMove();
stckp1.getChildren().add(image);
image.setTranslateX(xAxis);
spriteAnimation();
primaryStage.setScene(scn);



}

}

最佳答案

调用 scanner.nextLine() 将阻止整个应用程序,直到您按回车键。

像 JavaFX 这样的小部件库提供 event handling mechanisms用于处理键盘输入:

    scn.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.D) {
System.out.print("Move Right");
} else if (event.getCode() == KeyCode.A) {
System.out.print("Move left");
}
event.consume();
}
});

关于java - 使用 Scanner 和 JavaFX Stage 从键盘获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com