【发布时间】:2020-12-20 02:45:36
【问题描述】:
我有两个 .fxml 和两个 Controller。
首先显示客人信息(蓝色),当点击“添加”按钮时,它会弹出另一个阶段(灰色/白色)以搜索具有 ICnumber 的客人。
我的计划当我搜索完一位客人(灰色)后,我将点击“添加客人”按钮,舞台(灰色)将关闭,所有值将传递给客人信息(蓝色)。
@FXML //Guest Information (blue stage)
void addGuest(ActionEvent event) throws IOException {
iclb.setText("ok"); //ignore this
Parent root = FXMLLoader.load(getClass().getResource("Guest.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle("Hotel System - Guest Information");
stage.setResizable(false);
stage.show();
}
public void addGuestInfo(String icno) {
iclb.setText(icno); // this is the label for IC Number
}
--
@FXML //Search Guest (grey stage)
void addGuest(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MenuDraft.fxml"));
Parent root = loader.load();
MenuController menu = loader.getController();
menu.addGuestInfo(ictf.getText());
Stage stage = (Stage) addbt.getScene().getWindow();
stage.close();
}
到目前为止,我设法搜索了一位客人并能够通过单击“添加客人”按钮关闭灰色阶段,但这些值没有传递给客人信息(蓝色阶段)。
我在使用 Javafx 方面非常新……有人可以帮我解决这个问题吗?
【问题讨论】:
-
嗨,不确定是否可以添加到回调数据或上下文中
-
您正在第二次加载
MenuDraft.fxml(大概是因为我认为您已经在其他地方加载了它),并为 UI 的第二个实例获取控制器。但是,由于 UI 的第二个实例(第二个代码块中的root)从未在任何地方显示,因此您将永远看不到调用addGuestInfo()的效果。当您加载Guest.fxml并将对第一个控制器的引用传递给它时,您可以获得对控制器的引用。或者,使用stage.showAndWait(),然后从第二个控制器获取数据。
标签: eclipse javafx scenebuilder