NullPointerException,即使对象指向 FXML 实例

NullPointerException, even though object is pointing to the FXML instance

(我正在使用 Scene Builder...)

这里是 MusicGeneratorGUI class...

public class MusicGeneratorGUI extends Application {
    @FXML private Sphere icon;
    ...
}

这里我已经实例化了具有相同 ID 的 FXML 文件中的对象...

<Sphere fx:id="icon" ... />

然而,System.out.println(icon); 在控制器的主要方法中 class 产生 null。

'icon' 球体对象为空。

这里是主要的 class... ('controller class')

public class Main implements Initializable {
    @FXML public static Sphere icon;

    public static void main(String args[]) {
        System.out.println(icon);
    }

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        //Nothing here...
    }
    ...
}

您需要创建加载程序的实例。

FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml"));

然后您可以访问您的控制器实例。

Main main = loader.getController();

然后您可以从控制器访问icon

System.out.println(main.icon); 

请注意,您仍然可以通过以下方式获取父项。

Parent root = loader.load();

你可以考虑从controller的initialize方法开始,这样就不需要暴露Controller的icon了。另外,为什么你的图标是静态的?我认为你需要放弃静电。