如何在javafx中的其他textField中再次使用actionEvent

时间:2015-08-26 04:04:22

标签: javafx

我有一个我正在创建的登录表单,我希望TextField ActionEvent也可以在Button中使用,但我不知道该怎么做。在Swing中,我已经看到它可以回收ActionEvent并在TextField之类的其他地方使用它,但我不知道如何在JavaFX中执行此操作。

以下是我的TextField代码ActionEvent 我也想将它应用于我的Button所以我不必创建另一个方法,只有相同的功能但不同的组件。感谢

 passField.setOnKeyPressed(new EventHandler<KeyEvent>()
        {
            @Override
            public void handle(KeyEvent e)
            {
                if(e.getCode().equals(KeyCode.ENTER))
                {
                    if(admin.equals(userField.getText()) && password.equals(passField.getText()))
                    {
                        textInfo.setText("WELCOME "  + passField.getText());
                        textInfo.setTextFill(Color.BLACK);
                    }
                    else
                    {                       
                        userField.clear();
                        passField.clear();

                        textInfo.setText("Incorrect username or password"); 
                        textInfo.setTextFill(Color.RED);
                    }
                }
            }

        });

1 个答案:

答案 0 :(得分:1)

您必须找到EventButton支持的共享TextField。 在您的示例中,您附加了KeyEvent监视ENTER密钥的处理程序,该密钥等同于ActionEvent。幸运的是,Button也支持它。

创建共享EventHandler

final EventHandler<ActionEvent> myHandler = e -> {
    if(admin.equals(userField.getText()) && password.equals(passField.getText())) {
        textInfo.setText("WELCOME "  + passField.getText());
        textInfo.setTextFill(Color.BLACK);
    }
    else {                       
        userField.clear();
        passField.clear();

        textInfo.setText("Incorrect username or password"); 
        textInfo.setTextFill(Color.RED);
    }
}

您现在可以连接两次(甚至更频繁):

button.setOnAction(myHandler);
passField.setOnAction(myHandler);

修改

没有lambda表达式:

final EventHandler<ActionEvent> myHandler = new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e)
        {
                if(admin.equals(userField.getText()) && password.equals(passField.getText())) {
                    textInfo.setText("WELCOME "  + passField.getText());
                    textInfo.setTextFill(Color.BLACK);
                }
                else {                       
                    userField.clear();
                    passField.clear();

                    textInfo.setText("Incorrect username or password"); 
                    textInfo.setTextFill(Color.RED);
                }
        }

    });