我试图将程序菜单栏的逻辑放在另一个文件中,这样我的 MainController 就不会那么大和困惑。 我创建了 Menucontroller.java,但 Scenebuilder 无法识别任何字段或方法。
我并不是想用自己的 fxml 文件创建一个新的 Controller 。 我想拆分我的 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 字段中收到任何提示来分配 fxVariables。
最佳答案
一个 FXML 文件只能有一个 Controller ,因此 @FXML 只能在该一个 Controller 中被识别。如果您希望拆分代码,则必须获取 Controller 中的所有 javafx 元素,然后像普通 java 对象一样将它们传递到其他文件。 例如:
public class MainController {
@FXML MenuBar bar;
@FXML Menu menu;
@FXML
public void initialize(){
MenuController mc = new MenuController(bar, menu);
}
}
关于java - 将 MainController 拆分为多个文件时,让 Javafx/Scenebuilder 识别标记字段和方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412660/