Запускать ту же функцию при нажатии и нажатии клавиши ввода - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть эта функция, которая запускается при нажатии на кнопку, но я хочу запустить ту же функцию при нажатии 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 голосов
/ 14 ноября 2018

Вы имеете в виду, что у вас есть другая функция @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(), потому что он унаследован, и в показанном вами коде нет ничего более конкретного, что вы делаете с событием.

0 голосов
/ 15 ноября 2018

Я нашел рабочее решение для себя.

Вы можете установить кнопку в качестве кнопки по умолчанию в Scene Builder, поэтому при нажатии клавиши ввода она также активирует метод.

0 голосов
/ 14 ноября 2018

Вам нужно ключевое событие, затем нужно проверить, что это «ввод», который был нажат.

Обнаружение, когда пользователь нажимает ввод в Java

...