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

JavaFx:如何从CustomComponentController类引用主控制器类实例?

滑文昌
2023-03-14

我有一个标准的JavaFX应用程序:Main。java,主控制器。JAVA

问题是在CustomComponentController方法中,我需要引用来自MenuController的其他方法和标准组件。我添加公共静态Main Controller mc;Main Controller类主体,以便可以从CustomComponentControllerMain Controller.mc.needed方法())中看到它。然后我尝试在Main Controller.initialize()方法(mc=this;)中将所有内容传递给它-当调试这个断点时,我看到this充满了组件实例,但是mc之后保留空组件。

问题是如何引用运行的Main Controller实例,以便在其他类中使用其组件和方法,并相互交叉引用不同的自定义组件?如何通过将其全部移动到组件自己的类来清除组件的事件处理程序和辅助方法中的Main Controller代码?

我尝试了以下方法,但没有办法让它们不出错:

访问FXML控制器类

如何访问JavaFX2.0中的控制器类?

JavaFX2.0FXML。从其他任务更新场景值

javafx2.2-fx:include-如何从子控制器访问父控制


共有2个答案

柴丰
2023-03-14

你的问题看起来像经典的catalog-crud表单更新,我实现了一个接口,我称之为Updatable,带有更新方法,这样我就可以在通过Controller Main Class后轻松地引用任何目录表单作为子根组件窗体的UserData属性

希望它能解决你的问题

巫马望
2023-03-14

如果您符合以下条件,问题可以解决:

>

不要忘记CustomComponentController的fxml中的id:

custom\u component\u控制器中省略参数fx:controller=“main.CustomComponentController”。fxml导致“控制器值已指定”错误(在main.fxmlcustom\u component\u Controller.fxml标记声明的控制器之间存在冲突)。

Putmc=this 在主控制器的initialize()方法的开头。在CustomComponentController类中使用mc之前,请检查它是否不为null。当所有组件(包括CustomComponentController)都在应用程序启动时实例化,但还没有mc实例时,它可以为null。加载组件后,将调用实例化MainController的MainController方法initialize()。因此,更好的做法是在下一段中使用这种方法

main中。fxml创建与CustomComponentController相同类型的主组件,并且只使用fx:id参数。通过创建reloadcustomponentcontroller()方法并从CustomComponentControllerinitialize()方法调用它,将主组件替换为CustomComponentController。通过将以下内容添加到reloadcustomponents()方法中来完成此操作:

定制成分鸟嘌呤。getChildren()。移除(自定义组件);

customComponent=新的customComponent();

定制成分鸟嘌呤。getChildren()。添加(自定义组件);

因此,可以将所有组件及其所有方法放置在CustomComponentController外部,并在应用程序启动时重新加载。所有组件声明都保留在MainController类中,可以通过MainController mc参考访问。不需要使用参数重复创建详细的零部件。

 类似资料:
  • 问题内容: 我的问题是所有使用示例都需要您通过一个阶段。唯一的问题是,我的UI是在文件中定义的,该文件使用与主阶段分离的控制器类。 我该怎么做才能使其正常工作?就像我说的那样,我在控制器类中没有任何阶段的引用,那我该怎么办? 问题答案: 对于场景中的任何节点(例如,根节点;但是注入的任何节点都可以),请执行

  • 这让我的头撞到了墙上!!!!希望有人能给我指出正确的方向。我确信我在做一些完全愚蠢的事情。我找了又找,但似乎找不出为什么这不管用!!(在IntelliJ IDE 15.x上使用JDK8.x和Scenebuilder)。我试图在GUI上显示数据,但希望access通过编程将这些数据从其他类/方法发送给它。。。。下面是一个简单的概念,我在着手更大的项目之前,正试图让它发挥作用: 我的简单GUI在FXM

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

  • 我真的很难理解JavaFX控制器,我的目标是写一个TextArea来充当日志。 我的代码在下面,但我希望能够改变值等从另一个类,我可以调用时需要。我试图创建一个扩展初始化的控制器类,但我无法使它工作。有谁能指引我正确的方向吗?

  • 嗨,我正在构建JavaFX项目,我正在使用JavaFX Scene Builder2。我想将我的控制器链接到我的fxml文件,但是我看不到在Scene Builder2中添加控制器到我的fxml文件的可能性。我在想是否有人能帮我一下。谢谢你。

  • 问题内容: 有什么方法可以从关联的类控制器获取FXML加载文件的Scene对象。 我正在做这样的事情: 但是我想要一个不引用AnchorPane控件的解决方案。 问题答案: 为什么不?Controller是一个抽象类,除非您有意让他知道,否则他不了解UI。 节点(包括AnchorPane)是另一个故事,它们几乎不存在于场景图的外部。因此,最好向Node询问有关其父母或场景的信息。 如果您仍然想单独