单击并按Enter键时运行相同功能

时间:2018-11-14 11:30:37

标签: java javafx scenebuilder

我具有单击按钮时运行的功能,但是我想在按Enter键时运行相同的功能。我该怎么办?

@FXML
public void login(ActionEvent event) throws IOException {
    if(txtUName.getText().equals("jesse") && txtPass.getText().equals("essej")){
        Parent home;
        try {
            home = FXMLLoader.load(getClass().getResource("Home.fxml"));
            Scene homeScene = new Scene(home);

            Stage window = (Stage)((Node)event.getSource()).getScene().getWindow();

            window.setScene(homeScene);

            window.show();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }else {
        lblError.setVisible(true);
    }
} 

3 个答案:

答案 0 :(得分:0)

您需要一个关键事件,然后应检查此事件是否为“已输入”。

Detecting when user presses enter in Java

答案 1 :(得分:0)

您的意思是您还有另一个要执行相同操作的@FXML函数?只需将逻辑放在单独的函数中,然后从事件函数中调用它即可。

@FXML
public void buttonPressed(MouseEvent event) {
    doSomething(event);
}

@FXML
public void keyPressed(KeyEvent event) {
    doSomething(event);
}

private void doSomething(InputEvent event) {
    // your code here
}

此KeyEvent和MouseEvent继承自InputEvent。您仍然可以调用.getSource(),因为它是继承的,并且在您显示的代码中,您没有对事件进行更具体的操作。

答案 2 :(得分:0)

我为我找到了一个可行的解决方案。

您可以在Scene Builder中将按钮设置为“默认按钮”,因此当您按Enter时,它也会激活该方法。