为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX-可以将应用程序类作为控制器类

JavaFX-可以将应用程序类作为控制器类

陪伴而非守候 2019-07-09 16:05:00
JavaFX-可以将应用程序类作为控制器类目前,我正在自学JavaFX,我使用了一个简单的示例程序,它硬编码视图,并将其转化为使用FXML的视图(主要是为了让我可以使用SceneBuilder构建UI)。我使用的不是单独的控制器类,而是应用程序类(因此有一个Java文件和一个FXML文件)。我没有用initialize()方法,因为它是一个线性流(显示UI、填充字段、等待输入)。视图弹出,但是应用程序出错,因为没有一个控件被映射到适当的变量(所以)@FXML TableView<...> table, table是null).但是,我输入了一个initialize()方法时注入控件。initialize()时,然后返回为空。initialize()出口。所以问题是,JavaFX是否将应用程序类的新实例化为单独的控制器类?这将解释为什么变量超出了范围。或者是其他的东西(例如,只有在从JavaFX操作中被调用时才注入控件)?
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

如果您已经将应用程序类定义为FXML文件中的控制器,JavaFX将创建应用程序类的新实例,并将新实例用作控制器。因此,现有的应用程序类对于表仍然是空的。

但是,可以在应用程序类中以编程方式定义控制器,以使用自己的实例:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("example.fxml"));fxmlLoader.setController(this);Parent root = (Parent)fxmlLoader.load();


查看完整回答
反对 回复 2019-07-09
?
HUH函数

TA贡献1836条经验 获得超4个赞

“FXMLLoader的默认行为是创建控制器类的一个新实例,并将该实例用作控制器。”这就是我想要发生的事。我正在尝试快速而肮脏的转换,现在显然没有遵循最佳实践

查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 462 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号