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



我正试图将程序菜单栏的逻辑放在另一个文件中,这样我的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中,我在action字段中没有得到exit函数的提示,在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);
}
}

最新更新