第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

每個聲明都需要@FXML嗎?

每個聲明都需要@FXML嗎?

SMILET 2019-08-19 17:40:18
每個聲明都需要@FXML嗎?每個聲明都需要@FXML,還是第一個?換句話說,我應(yīng)該使用@FXMLpublic Label timerLabel = new Label();@FXMLpublic TextField mainTextField, projectTextField ;@FXMLpublic Button goButton, deleteAllButton ;@FXMLpublic ComboBox<String> projectComboBox ;@FXMLpublic TableView<Entry> mainTable ;@FXMLpublic TableColumn<Entry, String> titleColumn, timeColumn, dateColumn ;@FXMLpublic TableColumn<Entry, Boolean> checkColumn, buttonColumn ;@FXMLpublic checkBox checkAllCheckBox ;要么@FXMLpublic Label timerLabel = new Label();public TextField mainTextField, projectTextField ;public Button goButton, deleteAllButton ;public ComboBox<String> projectComboBox ;public TableView<Entry> mainTable ;public TableColumn<Entry, String> titleColumn, timeColumn, dateColumn ;public TableColumn<Entry, Boolean> checkColumn, buttonColumn ;public checkBox checkAllCheckBox ;謝謝!
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經(jīng)驗 獲得超11個贊

所述@FXML注釋使得能夠FXMLLoader注入以FXML文件中定義的值轉(zhuǎn)換為在控制器類的引用。換句話說,如果你的注釋timerLabel@FXML,那么它將會被初始化FXMLLoader時的load()方法是通過與FXML文件中的元素叫fx:id="timerLabel"。正如其他人在評論中指出的那樣,這意味著你永遠不應(yīng)該寫代碼

@FXMLprivate Label timerLabel = new Label();

這里timerLabel將首先初始化為new Label();您在代碼中創(chuàng)建的內(nèi)容,然后幾乎立即重新初始化為FXML文件中定義的值。這至多是多余的,最糟糕的是誤導(dǎo)。如果未正確匹配變量名稱,則fx:id變量將引用錯誤,Label并且很難跟蹤錯誤。

要了解您的實際問題:

當(dāng)FXMLLoader加載FXML文件時,它將嘗試將具有fx:id屬性的任何元素注入控制器。它會尋找

  1. public具有與fx:id屬性匹配的變量名稱的任何字段,

  2. 任何public具有與使用fx:id注釋的屬性匹配的變量名稱的字段(或不具有)@FXML。

因此,在您的示例中,由于您的所有字段都是public,您可以省略所有@FXML注釋(即使是第一個),它仍然可以工作。

但是,如果您遵循良好做法并制作字段private,則必須注釋每個聲明@FXML以使注入工作。

所以

@FXMLprivate Label timerLabel;@FXMLprivate TextField mainTextField;

等會起作用,但是

@FXMLprivate Label timerLabel;private TextField mainTextField;

將不會。


查看完整回答
反對 回復(fù) 2019-08-19
?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

為每個人

fx:id="somename"

你需要一個

@FXMLpublic SomeClass somename;

我更喜歡把它寫成一行,因為當(dāng)有很多時候它更容易閱讀

@FXML public SomeClass somename;

沒有初始化

@FXMLpublic Label timerLabel = new Label(); // this is wrong


查看完整回答
反對 回復(fù) 2019-08-19
?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

@FXMLprivate TextField idTextField;@FXMLprivate TextField passwordTextField;

要么

@FXMLprivate TextField idTextField, passwordTextField;


查看完整回答
反對 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 3311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號