我试图在setOnKeyPressed
方法中使用事件注册方法start
两次,但我首先调用的方法不起作用。
例如,当我运行此代码并且单击键盘Wow Wow Wow
上的键时,不会打印!当我首先调用另一个方法,然后运行代码并单击键盘时,Pane上也没有显示任何内容,但我在控制台上打印了Wow Wow Wow
。我不知道为什么!
以下是代码:
public class Test extends Application {
String sms = "";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Pane pane = new Pane();
Text txt = new Text();
txt.setLayoutX(30);
txt.setLayoutY(30);
pane.getChildren().add(txt);
pane.setOnKeyPressed(e -> {
System.out.println("Wow Wow Wow");
});
pane.setOnKeyPressed(e -> {
sms = sms + e.getText();
txt.setText(sms);
});
Scene scene = new Scene(pane, 300, 300);
stage.setScene(scene);
stage.setResizable(false);
stage.show();
pane.requestFocus();
}
}
答案 0 :(得分:1)
setOnXxx()
是非常方便的方法,它在幕后使用addEventHandler(EventType, EventHandler<Event>)
,每个类型允许多个处理程序。
addEventHandler(KeyEvent.KEY_PRESSED, evt -> doSomething());