在文本字段中按Enter键时触发单击事件

时间:2017-10-30 21:28:45

标签: java javafx netbeans fxml

对不起这些问题......但我再次陷入困境。

我问这些问题所以我可以充分利用我的时间/学习。

我正在尝试使用回车键触发点击事件(所以当我手动点击登录btn时)。

我到目前为止的代码

 usernameField.setOnKeyPressed((KeyEvent event) -> {
        if(event.getCode()==KeyCode.ENTER){
            loginBtn.fire();
            System.out.println("Worked");
        }
    });

几乎可以做到这一点。系统输出消息出现,但现在激活loginBtn。

如果有所不同,我正在使用JavaFX和JFXButtons /文本框

1 个答案:

答案 0 :(得分:2)

当用户按下回车键时,文本字段会触发操作事件。所以你需要的只是

EventHandler<ActionEvent> loginHandler = e -> {
    // handle login here...
};

usernameTextField.setOnAction(loginHandler);
loginBtn.setOnAction(loginHandler);

或者,如果您愿意;

usernameTextField.setOnAction(e -> handleLogin());
loginBtn.setOnAction(e -> handleLogin());

// ...

private void handleLogin() {
    // handle login here...
}

如果您使用的是FXML,则可以将两个onAction处理程序映射到同一个控制器方法:

<TextField fx:id="usernameTextField" onAction="#login" />
<Button fx:id="loginBtn" text="Log In" onAction="#login" />

然后在控制器中

public class Controller {

    // ...

    @FXML
    private void login() {
        // login action here..
    }

    // ...

}