JavaFX8 - FXML 如何在 onAction-tag 中使用参数调用方法?
JavaFX8 - FXML How to call method with parameters in onAction-tag?
如何使用 FXML 之外的参数调用方法?
在Java我使用这个代码:
textfield.setOnAction(event -> {
endEdit(false);
});
在 FXML 中,我知道我可以调用这样的方法:
<TextField onAction="#endEdit">
那么如何使用参数 false
在 FXML 中调用方法 endEdit(Boolean)
?
您可以将 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(...)
。
如何使用 FXML 之外的参数调用方法?
在Java我使用这个代码:
textfield.setOnAction(event -> {
endEdit(false);
});
在 FXML 中,我知道我可以调用这样的方法:
<TextField onAction="#endEdit">
那么如何使用参数 false
在 FXML 中调用方法 endEdit(Boolean)
?
您可以将 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(...)
。