我正试图将程序菜单栏的逻辑放在另一个文件中,这样我的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);
}
}