为什么当按下左箭头时,我不能打印“左”?
问题描述:
public void start(Stage stage) throws Exception {
StackPane root = new StackPane();
Scene scene = new Scene(root, 400, 400);
EventHandler eventHandler = new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
System.out.println("handle");
if(event.getCode().equals(KeyCode.LEFT)) {
System.out.println("left");
}
}
};
Circle circle = new Circle(200,200,100);
circle.setFill(Color.AQUAMARINE);
circle.setOnKeyPressed(eventHandler);
root.getChildren().add(circle);
stage.setTitle("JavaFX GUI");
stage.setScene(scene);
stage.show();
}
为什么我按下左箭头时不能打印“左”?我不明白...这是一个JavaFX应用程序... 我想,当我键入我的键盘上的左箭头,这个prinln“离开”为什么当按下左箭头时,我不能打印“左”?
答
你添加了监听器到一个Node
没有收到焦点。将它添加到Scene
来代替:
scene.setOnKeyPressed(eventHandler);
或设置Circle
到true
的focusTraversable
property:
circle.setFocusTraversable(true);
是 “处理” 打印出来? – Supahupe
在继续提出新问题之前,先回答并接受旧问题中的答案! – camickr