Javafx:如何绑定一个按钮的两个功能

时间:2016-08-11 11:05:21

标签: function javafx

伙计们,今天我遇到了另一个问题。 这是我的代码的一部分。我有2个功能,我想分配给一个按钮(登录),我该怎么做?

@FXML
private void fireLogIn()
{
    LogInButton.setOnKeyPressed(event -> {
           if(event.getCode() == KeyCode.ENTER){
             LogIn(event); // <--- there is an error of wrong type of data 
           }
        }); 
}


@FXML
private void LogIn(ActionEvent event) throws IOException {
    if(LoginField.getText().equals("MKARK")&&PasswdField.getText().equals("KACZOR1"))
    {
        Parent parent = FXMLLoader.load(getClass().getResource("/fxmlFiles/MainScreen.fxml"));
        Scene MainScene = new Scene(parent);
        Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
        stage.setScene(MainScene);
        stage.show();


    }
    else
    {
        IncorrectDataLink.setVisible(true);
        IncorrectDataLink.setOnAction(e-> openWebpage(uri));    
}

}

我想提供这两种设施,只需用鼠标按下按钮,或者只要按下它就按“ENTER”按钮。

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。

  1. 您没有理由将ActionEvent传入Login方法。如果删除ActionEvent参数,则可以从另一个事件中调用Login
  2. LoginButton.fire()会以编程方式点击该按钮,然后会触发Login事件。如果您向按钮添加OnKeyPressedListener,并检测到&#39; ENTER&#39;单击密钥,您可以以编程方式单击该按钮,而不必再次调用Login方法。
  3. 以下是一些帮助您检测按钮上的Enter键的链接

    Fire Button's onAction with Enter in JavaFX

    javafx: How to bind the Enter key to a button and fire off an event when it is clicked?