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

标签 java javafx scenebuilder

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

相关文章:

JavaFX 场景始终为空;显示空舞台

java - HBox 内的左对齐按钮(如果重要的话,在 pagnition 内)

JavaFX 单选按钮禁用/启用文本字段

跨 Java 虚拟机实现的 Java toString 表示?

javafx - 在 CSS 不起作用的情况下删除 JavaFX TitledPane 中的插图

java - 将 JavaFX 标签中的多行文本居中

JavaFX - 如何从 TextField 打印文本

java - 未能设置 gradle : 'Could not find the main class: org.gradle.launcher.GradleMain.'

java - 类型删除和桥接方法

java - 在语句中使用 sql 变量时突然出现 SQL 异常