[英]Binding Fields to Controllers in Javafx
我已經使用場景生成器構建了一個場景,並且有兩個文本字段屬於UI,一個用於Flavor,一個用於Topping。 在控制器中,我用@FXML注釋了每個textfield屬性。 我的問題是:如何將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字段與controller變量綁定。 確保將UI中的場景與場景構建器中的控制器綁定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.