甲骨文建議
參閱Oracle建議:
- Why use FXML
- Implementing JavaFX Best Practices
甲骨文不推薦佈局定義FXML過的Java API。
備用陳述技術爲JavaFX
其他聲明條的JavaFX是CSS和3D models
一個半聲明的方法是JavaFX Builder API,但你可能想避免,作爲the builder api will be deprecated in future JavaFX versions。
此外,如果您使用其他語言編程,其中一些嵌入了JavaFX開發的聲明性域特定語言(DSL)(例如ScalaFX或GroovyFX)。
通常,聲明性語法的使用主要贏得了大多數UI標記任務的程序性編程。這通過技術,如HTML,CSS,FXML,XAML,MXML,XUL的突出可以看出,等
低級編程
對於低級別的任務,例如開發一個自定義的JavaFX控制,操作JavaFX畫布或處理圖像數據時,程序化Java API最適合使用聲明式FXML,而不是JavaFX codebase in openjfx都使用FXML。
個人選擇和諮詢
最後,這裏沒有正確的答案。這個選擇留給開發者選擇他們最喜歡的方法。
你也沒有理由不能混合你認爲合適的兩種風格。與使用過程式和聲明式方法(例如html + javascript + ajax)的東西相比,使用直接聲明式方法會留下非常嚴格的UI(例如靜態html頁面) - 對於JavaFX也是如此在這種情況下爲html開發。
對於小程序,我喜歡在IDE中編寫一些代碼,編譯並運行它,而不必處理基於XML的FXML和Java代碼之間的上下文切換。但是我發現這種只採用程序的方法並不能很好地適應大型項目。將視圖分爲FXML有助於實現關注點和模塊化的分離。如果沒有FXML所要求的人爲分離,將這些觀點和邏輯關注點混合起來是非常容易的。
我不太喜歡XML作爲UI佈局語言。我認爲現在已經過時的JavaFX 1.x分支的FXD格式非常優秀。但是,FXML是JavaFX 2中最容易訪問和廣泛使用的聲明性UI語法。
我在JavaFX程序中使用了很多CSS,並且喜歡在FXML聲明性代碼和Java API過程代碼中使用它。在我看來,將代碼與樣式分離至少同樣重要,因爲它將代碼與佈局分開。
使用CSS時,最好將樣式放在單獨的樣式表中,而不是在代碼中內聯樣式。
正如另一個答案中指出的那樣,JavaFX SceneBuilder可視化設計工具目前僅適用於FXML,除此之外,許多人都有理由使用FXML來定義他們的JavaFX UI。