2017-03-06 23 views
1

好的,我有我的第一個JFX App Up &正在跑步。JavaFX:何時/何處元素/控件實例化?

現在,我在問自己,一切都很好地包裹在幕後。 所有這一堆FXML如何轉化爲具有適當實例的java代碼?它是如何工作的 ?

我想谷歌,如果我知道要寫什麼,但到目前爲止,我找到了很多關於如何使用它,但沒有太多關於它是如何製作的。

+1

它沒有轉換成Java代碼。 FXMLLoader在運行時讀取FXML文件並通過反射創建對象。 –

+0

看看[此說明](http://stackoverflow.com/documentation/javafx/1580/fxml-and-controllers/5125/example-fxml#t=201703061335279244705)有幫助。 –

回答

1

神奇發生在FXMLLoader裏面。

它收到一個FXML文件,並用XML解析器解析它。您不得不使用定義良好的XML節點集,並且加載程序知道如何在運行時將每個類型的這些XML節點「轉換」爲相應的java對象(轉換爲JavaFX Node)。如果XML文件的格式不正確(不符合定義的結構),您將得到一個異常。通過這種方式創建節點,剩下一件事:填充控制器。

要填充控制器,它將使用反射來創建指定控制器類的實例並設置其數據成員。它遍歷內部的@FXML註釋字段,然後將它們中的每一個設置爲具有匹配的fx:id屬性的創建對象之一。

最後在默認情況下,在控制器實例上調用公共方法initialize

+0

謝謝。現在這對我來說更清楚了 –

相關問題