JavaFX8 - FXML如何使用onAction-tag中的参数调用方法?

时间:2015-01-13 12:43:13

标签: java textfield javafx-8 fxml

如何使用FXML中的参数调用方法?

在Java中我使用以下代码:

textfield.setOnAction(event -> {
    endEdit(false);
});

在FXML中,我知道我可以调用这样的方法:

<TextField onAction="#endEdit">

那么如何使用参数endEdit(Boolean)调用FXML中的方法false

1 个答案:

答案 0 :(得分:7)

您可以将endEdit(...)方法调用封装在处理动作事件的@FXML带注释的方法中。像这样:

public class FXMLController implements Initializable {

    @FXML
    protected void handleTextFieldAction(ActionEvent e) {
        endEdit(false);
    }

    private void endEdit(boolean flag) {
        System.out.println("Flag value: " + flag);
        // Your implementation here
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }  
}

然后在您的FXML文件中将文本字段的onAction属性绑定到此handleTextFieldAction(...)方法,如下所示:

<TextField onAction="#handleTextFieldAction" />

如果布尔标志实际上取决于某些必须评估的条件,那么您可以在handleTextFieldAction(...)方法中处理它们并使用适当的值调用endEdit(...)