2017-09-10 199 views
1

我剛開始學習javafx來構建桌面應用程序。但我不明白一件事。這裏是我的問題: 我們可以通過編寫代碼創建一個圖形用戶界面,像:JavaFX或FXML。有什麼不同?


enter image description here


或者,我們可以使用場景生成器來創建圖形用戶界面,像這樣:

enter image description here


如果第二種方法是可用的,爲什麼我們應該使用書寫代碼,比如在哪裏放置這個標籤或按鈕等等。?

我是新來的,所以我不知道第二種方法是否有缺點。

+0

在我的經驗,建設者和預構建的軟件是良好的小任務,演示或項目不需要很大的變化。因爲只要你需要製作一個必須爲客戶做出「如此」的應用程序,那麼你只需要對構建器和代碼進行黑客攻擊,這通常非常耗時且不容易完成。兩種方法都有其用途,但取決於具體情況。 – tima

+4

只需使用任何適合您需要做的最好的樣式(如果需要,您可以在同一個應用程序中使用這兩種樣式)。 FXML很好地將控制器代碼中的佈局代碼分開,對於許多UI設計來說是最好的。但是,例如,如果您有20x20的按鈕陣列(或其他組件),使用數組和循環創建代碼比在FXML中創建所有400個控件要方便得多 –

+2

FXML是靜態的。對於固定的佈局,比如對話框和標準表單,這很有用。但是如果'Scene'是動態的,則可以使用FXML,並且必須直接調用API。 FXML是爲了您的方便,幫助將佈局和邏輯分開,但它不是所有用例的解決方案。 – Andreas

回答

1

我主要是在FXML工作我自己,我喜歡SceneBuilder的所見即所得的方式,但我有,我又回到了編碼的UI案件。

例如,我有一個應用程序,用戶最多可以回答10個問題。在編譯時不知道問題或其數量。我在GridPane的運行時爲問題創建標籤和複選框。 GridPane是FXML佈局的一部分。這可以單獨在FXML中使用ListView和自定義ListCells完成,但它實際上是更多的工作,我不需要Cell重用,因爲問題太少。

此外,它可以需要有10×10的按鈕,把100個按鈕FXML是沒有樂趣。當我在Android上實現一款遊戲like this時,我使用了這個功能。

此外,當你有很多的都是除了你可能想在代碼中,而不是把多個幾乎相同FXML文件來創建它們小的位置差異非常相似的不同的看法。

0

我是新的,所以我不知道如果第二個方法有任何弱點。

時間允許的話,單獨使用兩種方法寫你的UI!

嚴肅地說,如果您是新手,想要了解這兩種方法的缺陷,通常沒有更好的方法,可以輕鬆掌握一些方案,掌握兩種工具包,並查看您偏好哪種方法的情況。

有一個明顯的例子,一個人會比另一個更好,但是「中間」案件往往歸結爲個人偏好(並且在不僅僅是你在發展,基於團隊的偏好和堅持貴公司的代碼風格的要求也是如此。)