我正在用JavaFX制作注册表。而且我有按钮可以提交输入的数据,效果很好。但是我也想允许用户在按回车键时提交数据吗?
if语句是否按了按钮或enter是有什么方法可以组合成一个?
我知道我可以单独制作,但是我需要加倍代码。
最佳答案
您必须分别聆听按键事件和按键事件,无法用单个侦听器来处理这两个事件:按键将触发ActionEvent
,而按键将提交KeyEvent
。
但是,如果您创建一种方法来进行“数据提交”,而只是在两个侦听器中调用此方法,则可以避免代码重复。
submitButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
submitData();
}
});
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
switch (ke.getCode()) {
case ENTER:
submitData();
break;
default:
break;
}
}});
或使用lambdas的简写形式:
submitButton.setOnAction(event -> submitData());
scene.setOnKeyPressed(keyEvent -> {
if(keyEvent.getCode().equals(KeyCode.ENTER))
submitData();
});
关于java - JavaFX如何在一个注册表格中组合更多EventHandlers?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37236478/