我正在用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/

10-13 09:08