猿问

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

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

目前,我正在自学JavaFX,我使用了一个简单的示例程序,它硬编码视图,并将其转化为使用FXML的视图(主要是为了让我可以使用SceneBuilder构建UI)。我使用的不是单独的控制器类,而是应用程序类(因此有一个Java文件和一个FXML文件)。我没有用initialize()方法,因为它是一个线性流(显示UI、填充字段、等待输入)。视图弹出,但是应用程序出错,因为没有一个控件被映射到适当的变量(所以)@FXML TableView<...> tabletablenull).

但是,我输入了一个initialize()方法时注入控件。initialize()时,然后返回为空。initialize()出口。

所以问题是,JavaFX是否将应用程序类的新实例化为单独的控制器类?这将解释为什么变量超出了范围。或者是其他的东西(例如,只有在从JavaFX操作中被调用时才注入控件)?


陪伴而非守候
浏览 463回答 3
3回答

慕妹3146593

如果您已经将应用程序类定义为FXML文件中的控制器,JavaFX将创建应用程序类的新实例,并将新实例用作控制器。因此,现有的应用程序类对于表仍然是空的。但是,可以在应用程序类中以编程方式定义控制器,以使用自己的实例:FXMLLoader&nbsp;fxmlLoader&nbsp;=&nbsp;new&nbsp;FXMLLoader(getClass().getResource("example.fxml"));fxmlLoader.setController(this);Parent&nbsp;root&nbsp;=&nbsp;(Parent)fxmlLoader.load();

HUH函数

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

相关分类

Java
我要回答