在JavaFX中初始化GUI的最佳方法?

问题描述:

我想在应用程序启动的时候根据系统信息设置好几个UI元素(也就是说,这个信息并不是先验知道的,所以把它静态地设置在css或者fxml文件中)。 控制器构造函数是否是最好的地方? 首先要考虑的是在扩展Application的主类的start()init()方法上,但看起来这样做的设置阻止了程序员轻松访问沿着节点层次结构的ui元素。 (另一方面,通过@FXML注入在相应控制器中非常容易)在JavaFX中初始化GUI的最佳方法?

这取决于您需要完成的工作类型。如果你需要任何依赖于你的应用程序的阶段,然后在启动方法中执行它。如果不是,那么它可以在构造函数,init或start方法中执行。请记住,启动机制期望应用程序子类提供无参数构造函数,因此如果您在其中包含启动逻辑,则可以避免使用构造函数参数。然而,如果你打算使用一个控制器(我会建议),那么这个逻辑应该发生在它的initialize方法中,而不是在你的应用程序类中。

如果您需要从控制器对舞台的引用,那么您可以找到许多此类解决方案来将引用传递给控制器​​,例如在应用程序类中使舞台引用公开和静态,或者让控制器中的这样一个字段,可以根据应用程序的启动方法进行设置。