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

在JavaFX中初始化GUI的最佳方法?,javafx,Javafx,我想在应用程序启动时根据系统信息设置几个ui元素(即,这是事先未知的信息,因此在css或fxml文件中静态设置)。 控制器构造函数是执行此操作的最佳位置吗? 首先要考虑的是在扩展应用程序的主类的start()或init()方法上这样做,但是设置似乎阻止了程序员轻松访问节点层次结构中的ui元素。(另一方面,通过@FXML注入,在相应的控制器中非常容易实现)这取决于您需要完成的工作类型。如果需要依赖于应用程序阶段的任何内容,请在start方法中执行它。如果不是,则可以在构造函数、init或start

我想在应用程序启动时根据系统信息设置几个ui元素(即,这是事先未知的信息,因此在css或fxml文件中静态设置)。 控制器构造函数是执行此操作的最佳位置吗?
首先要考虑的是在扩展应用程序的主类的
start()
init()
方法上这样做,但是设置似乎阻止了程序员轻松访问节点层次结构中的ui元素。(另一方面,通过@FXML注入,在相应的控制器中非常容易实现)

这取决于您需要完成的工作类型。如果需要依赖于应用程序阶段的任何内容,请在start方法中执行它。如果不是,则可以在构造函数、init或start方法中执行。请记住,启动机制期望应用程序子类提供一个无参数构造函数,因此如果您在其中合并启动逻辑,那么就避免需要构造函数参数

但是,如果要使用控制器(我建议使用),那么这个逻辑应该出现在它的initialize方法中,而不是应用程序类中

如果您需要从控制器中引用stage,那么您可以找到许多这样的解决方案来将引用传递给控制器,例如在应用程序类中使stage引用公开且静态,或者在控制器中有这样一个字段,可以从应用程序的start方法设置