当前位置: 首页 > 知识库问答 >
问题:

JavaFX.从一个控制器访问另一个控制器的数据

葛昕
2023-03-14

需要你的帮助!这可能是更多的设计角度,但我在我的应用程序中使用这个模式,所以想得到一个想法。

我的问题是直接或间接地从一个控制器访问另一个控制器。是否有任何优雅的设计方法来做到这一点,而不是在另一个控制器中保留一个控制器的引用。

提前致谢

共有1个答案

蒯硕
2023-03-14

让您访问子窗格(View_1..view_n)的控制器的一种方法是在为根窗格加载子窗格时加载它们。

// Load root layout from fxml file.
FXMLLoader loader = new FXMLLoader();
rootLayout = loader.load( getClass().getResource( "BorderPane.fxml").openStream());

BorderPaneController bpc = (BorderPaneController) loader.getController();

List<Pane> subPaneList = new ArrayList<>();
for ( int i = 0; i < 30; i++) {
    loader = new FXMLLoader();
    loader.setLocation( MainApp.class.getResource( "View" + i + ".fxml"));
    subPaneList.add( (Pane) loader.load());
}
bpc.setSubPaneList( subPaneList);

// Show the scene containing the root layout.
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.show();

现在您只需要一个setSubPaneList(..)方法,您将能够访问子窗格的公共方法(例如getter/setter)

 类似资料:
  • 我有两个控制器和。我正在读一本书的内容。来自的txt文件,我希望将该文本放置在的文本区域中。代码在中运行并读取良好,但当打开中的窗口时,从中读取的内容。文本内容在文本区域中不可见。我的显示String mine包含内容,但它不显示在的文本区域中。请帮助任何人。非常感谢。 FXMLDocumentController代码 在中,有一个我删除了和,这样代码就可以工作了。

  • 我有两个控制器和。 在中,我有一个名为的方法。 如何在中访问此方法?

  • 和访问字段,如: 因为我希望有更好的方法来做到这一点。

  • 问题内容: 我需要从另一个控制器内的另一个控制器访问方法。我该怎么做?我可以使用方法吗? 我可以在当前控制器中包含该控制器,并使其成为对象并通过该对象访问该方法吗?这样可以吗? 我想调用另一个控制器的表单方法— newAction。 问题答案: 您可以将控制器定义为服务,然后在另一个控制器中获取它。 在定义所需的控制器即服务中: 然后,在任何控制器中,您都可以通过容器获取此服务: 在文档中有一些关

  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 因此,我将一个名为“size”的整数保存到一个名为SettingsStageController的控制器类中。java和我希望通过另一个名为GameStageController的控制器类文件访问该变量。java,但我似乎不知道怎么做。 设置标记控制器。JAVA GameStageController.java