我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。
教程介绍、教程目录等能在README里查阅。
写在前面
如果为了解决此问题,你有多次去使用各种方法去尝试JavaFX的加载顺序、试验自己的猜想是否正确,那么我将直接用最简洁的话告诉你们答案。
原因:我的一些同学,常常不思考、不尝试就来直接问问题,本着同学情的态度我给他们去耐心讲解,但仍最后只造成两种结果:
1、费了好大劲他听不懂。
2、费了好大劲他“听懂了”。
这个行业但学习不应该被别人推着走、应该学会自己独立思考:发现问题、分析问题和解决问题,很多人跳过了第二步,这样真的是不可取的,劝诫在座的各位,也诫告自己。
正文
1、创建一个容器,用来保存我们的Controller。
//这里是Main.java 创建一个Controller容器
public static Map<String, Object> controllers = new HashMap<String, Object>();
2、在初始化或构造函数中将Controller添加进去。
public class Controller implements Initializable {
//在FXML中通过fx:id获取到一个Spinner
@FXML
Spinner targetX;
@Override
public void initialize(URL location, ResourceBundle resources) {
//将此Controller添加到容器中
Main.controllers.put(this.getClass().getSimpleName(), this);
}
}
3、在另一个Controller获取被添加到Controller。
Controller controller = (Controller) Main.controllers.get(Controller.class.getSimpleName());
System.out.println(controller.targetX);
小结
通过这种传递,让数据变得流通了起来,如果有其他的解决方案,欢迎留言探讨。