如何解决JavaFX - EventHandling - KeyPressed 和 KeyTyped 无法正常工作
我正在学习 JavaFX 并遵循教程。 当我按 ENTER、SPACE 或 COMMA 时,程序没有检测到为 SPACE、ENTER 和 COMMA 按下的按钮(因此不显示其正确的消息)而是进入 setonKeyTyped。
我不明白这里有什么问题。在下面的图片中,我按了逗号。
package com.mathieuascain;
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class Main extends Application {
Label prompt;
Label showKey;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Handle KeyBoard events");
FlowPane rootNode = new FlowPane(Orientation.VERTICAL,10);
rootNode.setAlignment(Pos.CENTER);
Scene scene = new Scene(rootNode,300,100);
primaryStage.setScene(scene);
prompt = new Label("Press a key");
showKey = new Label("");
scene.setonKeyTyped(keyEvent -> showKey.setText("You typed : " + keyEvent.getCharacter()));
scene.setonKeypressed(ke -> {
switch (ke.getCode()) {
case RIGHT:
showKey.setText("You pressed right arrow");
break;
case LEFT:
showKey.setText("You pressed left arrow");
break;
case DOWN:
showKey.setText("You pressed down arrow");
case UP:
showKey.setText("You pressed up arrow");
break;
case F10:
showKey.setText("You pressed F10");
break;
case ALT:
showKey.setText("You pressed ALT");
break;
case ENTER:
showKey.setText("You pressed ENTER");
break;
case SPACE:
showKey.setText("You pressed SPACE");
break;
case COMMA:
showKey.setText("You pressed COMMA");
break;
}
});
rootNode.getChildren().addAll(prompt,showKey);
primaryStage.show();
}
}
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。