为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在一个场景中从另一个场景设置 TextField 的值,同时显示两个场景吗?

我可以在一个场景中从另一个场景设置 TextField 的值,同时显示两个场景吗?

手掌心 2022-12-15 15:58:56
我正在尝试使用在另一个场景中选择的值从一个场景填充 TextField。所以有一个场景(我称之为父场景),带有一个 TextField 和一个打开另一个场景的按钮(我称之为子场景)。子场景有一个 TableView,我想将其选择的值设置为父场景的 TextField。只有当带有 TextField 的场景尚未打开时,我才知道如何执行此操作,在我的例子中,子场景的舞台被设置为 showAndWait。所以我想我需要获取父场景的舞台并将其设置为子控制器下面 select() 方法中的舞台字段。// 来自子控制器的方法,当从 tableview 中选择一行时调用public void select() throws IOException    {         Class class = (Class)table.getSelectionModel().getSelectedItem();        FXMLLoader loader = new FXMLLoader();        loader.setLocation(getClass().getClassLoader().getResource("parentStage.fxml"));        Parent parent = loader.load();        Stage stage = // here i need to pass the parent stage I think;        stage.initModality(Modality.APPLICATION_MODAL);        ParentController parentController = loader.getController();        table.setOnMouseClicked(event -> {            if(event.getClickCount()==2){       parentController.setTextField(new TextField(class.getValue()));         stage.setScene(new Scene(parent));// also, I think, here it should be passed the already opened parent scene              stage.show();            ((Node)(event.getSource())).getScene().getWindow().hide();                }  });// 这是打开子场景的父场景按钮的方法 public void add() throws IOException    {     Parent parent = FXMLLoader.load(getClass().getClassLoader().getResource("childStage.fxml"));        stage = new Stage();        stage.initModality(Modality.APPLICATION_MODAL);        stageProdusNou.setScene(new Scene(parent));        stageProdusNou.showAndWait();    }
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您可以通过以下方式执行此操作而无需重新加载基本布局:

  • 从第二个控制器创建对象

  • 在第二个控制器中创建一个方法,将传递的文本字段初始化为本地文本字段。

  • 使用创建的对象和方法将您的文本字段传递给第二个控制器。

  • 当第二个控制器上发生操作时更新您的文本字段。

这个答案是这里的代码和步骤的总结。


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信