在将 MainController 拆分为多个文件时,让 Javafx/Scenebuilder 识别标记的字段和方法?

Make Javafx/Scenebuilder recognize tagged fields and methods when splitting the MainController into multiple files?

我试图将程序菜单栏的逻辑放在另一个文件中,这样我的 MainController 就不会那么大和混乱。 我创建了 Menucontroller.java 但 Scenebuilder 无法识别任何字段或方法。

我不是要创建一个有自己的 fxml 文件的新控制器。 我想拆分我的 MainControllers 逻辑,代码在 MainController 内运行良好并得到识别。

我无法在任何地方找到如何执行此操作。 谁能告诉我使用 MenuController 的适当步骤是什么?

MainController.java:

public class MainController {

    @FXML
    private void calculate() {
        System.out.println(""Works.)
        }

MenuController.java: ^这通过在 Scenebuilder 中将计算分配为按钮的操作来识别和工作。

package application;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;

public class MenuController {

    @FXML MenuBar fxMenuBar;
    @FXML Menu fxFileMenu;
        @FXML MenuItem fxExitItem;
    @FXML Menu fxEditMenu;
    @FXML Menu fxHelpMenu;

    @FXML
    private void exit(ActionEvent fxExitItem) {
        System.out.println("Exit function called.");
    }
}

^这个没有。在 Scenebuilder 中,我没有在退出功能的操作字段中得到提示,也没有在 ID 字段中为 Menuitems 分配 fxVariables 的任何提示。

一个 FXML 文件只能有一个控制器,所以@FXML 只能在那个控制器中被识别。如果您希望拆分代码,则必须获取控制器中的所有 javafx 元素,然后像普通 java 对象一样将它们传递给另一个文件。 例如:

public class MainController {
    @FXML MenuBar bar;
    @FXML Menu menu;


    @FXML
    public void initialize(){
        MenuController mc = new MenuController(bar, menu);
    }
}