将字段绑定到 Javafx 中的控制器



我已经使用场景生成器构建了一个场景,我有两个文本字段是UI的一部分,一个用于风味,一个用于顶部。 在控制器中,我用@FXML注释了每个文本字段属性。我的问题是:如何将 UI 中的字段与控制器类中的属性相关联?

java代码看起来像:

@FXML
private TextField flavorValueField;
@FXML
private TextField toppingValueField;

在 ui 中,字段存在于场景中,但实际上没有任何与之关联的字段来标识它们。他们需要什么吗?我不清楚,我如何确保 UI 中的字段和代码中的字段之间的绑定以我希望的方式发生。

仅仅说是不够的,它只是有效。我想了解代码如何知道将 UI 中的一个字段绑定到代码中的属性。UI 字段是通用的。没有标识符或分类器说,这个是味道,那个是顶部。如果它只是"工作",绑定是如何发生的?

FXMLLoader检查 fxml 文件中fx:id属性。如果控制器中存在与此属性的值匹配的FXMLLoader可见字段,FXMLLoader尝试使用反射将为包含该属性的元素创建的对象分配给该字段。

例如

<Button fx:id="foo"/> <!-- this is assigned to the foo field, if possible -->
<Button fx:id="bar"/> <!-- this is assigned to the bar field, if possible -->
@FXML
private Button bar;
@FXML
private Object foo;

请注意,这些值仅在 fxml 完成加载或在initialize方法(如果存在(中可用。在控制器的初始值设定项/构造函数中,它们仍然包含null.

你不需要做任何事情,而不是你所做的。它只是@FXML,它将 UI 中的字段与控制器变量绑定。确保将 UI 中的场景与场景生成器中的控制器绑定。

最新更新