gpt4 book ai didi

java - @FXML注入(inject)中的空指针异常

转载 作者:行者123 更新时间:2023-12-02 03:21:37 25 4
gpt4 key购买 nike

我正在尝试使用 JavaFX 和 FXML 文件,但是当我在 Controller 中注入(inject) MenuBar 时出现问题,编译器给我一个 NullPointerException。我尝试使用按钮和文本字段,它有效。

这是我的代码:FXML 文件:`

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<VBox fx:controller="it.fedgiac.projectmanager.controller.ControllerMain" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<MenuBar fx:id="menubar_mainmenu" />
</children>
</VBox>`

这是我的 Controller

public class ControllerMain {

@FXML
public MenuBar menubar_mainmenu;






public void generateView(Stage stage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("main_layout.fxml"));

Scene scene = new Scene(root);

stage.setTitle("Projects Manager");
menubar_mainmenu.getMenus().add(new Menu("File"));
stage.setScene(scene);
stage.show();



}
}

调试后我发现变量menubar_mainmenu为空

这是错误: IntelliJ error

预先感谢您的帮助。

最佳答案

使您的 FXML Controller 实现 Initialized。然后系统将提示您实现方法initialize(URL url, ResourceBundle resourceBundle)。在此方法中,您可以确保 menubar_mainmenu 已初始化。您可以将现有代码移至该方法中。

public void initialize(URL url, ResourceBundle resourceBundle){
menubar_mainmenu.getMenus().add(new Menu("File"));
}

关于java - @FXML注入(inject)中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com