我想在应用程序启动时根据系统信息设置几个ui元素(即这是先验未知的信息,因此要在css或fxml文件中静态设置它)。
控制器构造函数是最好的地方吗?
第一个考虑因素是在扩展Application的主类的start()
或init()
方法上执行此操作,但似乎设置是阻止程序员轻松地从节点一直访问ui元素层次结构。 (另一方面,通过@FXML注射在各自的控制器中非常容易)
答案 0 :(得分:0)
这取决于您需要完成的工作类型。如果您需要依赖于应用程序阶段的任何内容,请在start方法中执行。如果没有,则可以在构造函数,init或start方法中执行。请记住,启动机制期望Application子类提供无参数构造函数,因此如果在那里合并启动逻辑,则避免需要构造函数参数。
但是,如果你要使用一个控制器(我建议使用),那么这个逻辑应该在它的initialize方法中出现,而不是在你的应用程序类中。
如果您需要从控制器引用该阶段,那么您可以找到许多此类解决方案,以便在SO上将引用传递给控制器,例如在您的应用程序类中使阶段引用为public和static,或者具有此类控制器中的一个字段,可以根据应用程序的启动方法进行设置。