【发布时间】:2016-01-23 00:56:00
【问题描述】:
我目前正在自学 JavaFX,我采用了一个简单的示例程序,该程序对视图进行了硬编码,并将其转换为使用 FXML 的程序(主要是为了可以使用 SceneBuilder 来构建 UI)。我没有编写单独的控制器类,而是使用应用程序类(因此有 1 个 Java 文件和 1 个 FXML 文件)。我没有使用initialize() 方法,因为它是一个线性流(显示 UI、填充字段、等待输入)。视图弹出,但随后应用程序出错,因为没有任何控件映射到适当的变量(所以对于@FXML TableView<...> table,table 是null)。
但是我放了一个initialize()方法进行调试,在initialize()时注入控件,在initialize()退出时返回null。
所以问题是,JavaFX 是否将应用程序类的新实例实例化为单独的控制器类?这可以解释为什么变量超出范围。还是其他原因(例如,仅在从 JavaFX 操作回调时才注入控件)?
【问题讨论】:
-
它还能做什么?
FXMLLoader如何知道该类的实例是否已经存在?即使它可以分辨,它又如何在可能的多个实例中进行选择?