javafx中如果有一个fxml文件的控制器,我该怎么去将这个fxml窗口中的文本框里的数据传给下一个窗口
时间: 2024-03-17 19:45:58 浏览: 68
JavaFX高级教程:JavaFX2.0的FXML语言.docx 官方中文文档
5星 · 资源好评率100%
您可以通过以下步骤将FXML窗口中的文本框数据传递给下一个窗口:
1. 在FXML控制器中定义一个`TextField`对象,用于获取FXML窗口中文本框的数据。
2. 在FXML控制器中定义一个`Button`对象,并为其添加一个事件处理程序。
3. 在事件处理程序中创建一个`FXMLLoader`对象,用于加载下一个FXML文件。
4. 获取下一个FXML文件的控制器对象。
5. 将第一步中定义的`TextField`对象的值传递给下一个FXML文件的控制器对象。
以下是示例代码:
FXML控制器中定义的`TextField`对象和`Button`对象:
```java
@FXML
private TextField textField;
@FXML
private Button nextButton;
```
为`Button`对象添加事件处理程序:
```java
nextButton.setOnAction(event -> {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("nextWindow.fxml"));
Parent root = loader.load();
NextController nextController = loader.getController();
nextController.setTextFieldData(textField.getText());
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
} catch (IOException e) {
e.printStackTrace();
}
});
```
下一个FXML文件的控制器中定义的方法用于接收传递过来的文本框数据:
```java
public void setTextFieldData(String data) {
textField.setText(data);
}
```
在上述代码中,我们通过`FXMLLoader`对象加载下一个FXML文件,并使用`getController()`方法获取下一个FXML文件的控制器对象。接着,我们通过调用`setTextFieldData()`方法将第一步中定义的`TextField`对象的值传递给下一个FXML文件的控制器对象。最后,我们创建一个新的`Stage`对象,并将下一个FXML文件的场景设置到该窗口中进行显示。
阅读全文