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