(我正在使用场景生成器…)
这是MusicGeneratorGUI
类…
public class MusicGeneratorGUI extends Application {
@FXML private Sphere icon;
...
}
这里我已经实例化了FXML文件中具有相同ID的对象…
<Sphere fx:id="icon" ... />
但是,控制器类的main方法中的System.out.println(icon);
产生null。
'icon'球体对象为空。
这是主类…(控制器类)
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();
你可以考虑从控制器的initialize方法中做这个,这样你就不需要暴露控制器的图标了。另外,为什么你的图标是静态的?我认为你应该放弃静态。