小编Bel*_*oso的帖子

JavaFX:需要帮助理解 setControllerFactory

我在创建应用程序期间设置了多个自定义控制器,并且需要一些帮助来使用 JavaFX 中的 setControllerFactory 组织这些控制器。

我对 JavaFX 相当缺乏经验,但在使用 Scenebuilder 和 JavaFX 创建一个小应用程序方面投入了相当多的时间。

应用程序背景 该应用程序包括: - 地图(作为 imageView 实现) - 带有用于拖放事件的按钮和图标的侧边栏。- 地图也有单独的图层作为拖放不同图标类型的目标。

作为我的拖放事件的原型,我使用了 Joel Graff ( https://monograff76.wordpress.com/2015/02/17/developing-a-drag-and-drop-ui-in-javafx-part -i-骨架-应用程序/)。他写道:“为了使一个对象在容器边缘之外可见,它必须是父容器或其他祖先容器的孩子——它必须属于更高层次的层次结构。在我们的拖拽图标的情况下,这意味着我们必须将其作为子项添加到 RootLayout 的顶级 AnchorPane。” 他在他的项目中使用了动态根。

为了自学如何使用 FXML 自定义控件,我使用了 Irina Fedortsova 的教程https://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm。为了了解如何设置多个屏幕,我使用了视频https://www.youtube.com/watch?v=5GsdaZWDcdY和来自https://github.com/acaicedo/JFX-MultiScreen 的关联代码。

构建我的应用程序后,我的应用程序的逻辑层得到了?越来越纠缠于表现层,我觉得我的代码似乎会从一些重构中受益匪浅。我的问题似乎是缺乏对控制器类的加载和初始化过程的理解。由于拖动图标和 RootLayout 必须从一开始就加载,所以我如何以一种可以在以后再次调用它们的方式加载这些类对我来说是个谜。

当我在寻找进一步的解决方案时,我反复遇到了 setControllerFactory 方法。不幸的是,我找不到一个很好的解释来说明如何正确使用它以及它的具体目的是什么。我找到的唯一教程是:https://riptutorial.com/javafx/example/8805/passing-parameters-to-fxml---using-a-controllerfactory,不幸的是,它似乎对我的目的来说有点不够。

我觉得好像我会从方法/类中受益最大,我可以用它来组织我所有的自定义控制器,在适当的时间加载和初始化它们,然后再次访问它们(类似于 JFX 视频中的接口和超类-多屏)。

javafx scenebuilder

1
推荐指数
1
解决办法
1343
查看次数

标签 统计

javafx ×1

scenebuilder ×1