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了。另外,为什么你的图标是静态的?我认为你需要放弃静电。
(我正在使用 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了。另外,为什么你的图标是静态的?我认为你需要放弃静电。