2015-11-23 71 views
1

我目前正在嘗試將JavaFX應用程序轉換爲FXML應用程序(工作需求),並且我現在已經在圈子中運行了一段時間。我理解基本原理(用戶界面和後端工作單獨定義),但所有的跳躍,技術性,變通方法,所有初始化(),裝載機,start(),launch(),控制器,注入和什麼都沒有讓我有點頭痛。目前狀態下的應用程序吐出了編譯時錯誤,如果我的生命依賴於它,我無法預測任何東西,但我隱約懷疑它會導致整個FXMLLoader事物的基本內容。在FXML應用程序中必須完成的所有「內務」是什麼?

這是沒有辦法工作。這些教程只解釋了它的每一部分,而我目前的做法仍然是複製/稍微修改我發現的任何地方,並希望它能以某種方式工作的代碼,而不是真正理解原則並採取理想的步驟來清除目標。有沒有我需要做的一切,以使FXML應用程序的工作清單,或一些明確的解釋如何一起來?

+0

也許我的答案的後半部分在http://stackoverflow.com/questions/33857389/how-to-pass-data-from-java-to-fxml/33857574#33857574會有所幫助。 –

回答

1

這裏的順序要求做的事情的清單,他們通常做:

  1. 在FXML文件中定義的用戶界面(比如ui.fxml)
  2. 寫控制器類爲給定的FXML這包含帶有@FXML註釋的JavaFX字段,從上述FXML注入。
  3. 回到FXML文件並添加fx:controller =「fullpackagename.ControllerName」
  4. 如果需要,執行public void initialize()。這將在注射後被調用。注意方法簽名,必須完全一樣。
  5. 編寫一個入口點,通常爲SomethingApp extends Application。在覆蓋start()期間Scene對象構造將以下作爲根節點傳遞到現場 - FXMLLoader.load(getClass().getResource("ui.fxml"))

這是短暫的工作example。該示例假定您熟悉Maven目錄結構。如果沒有,那麼所有3個文件,即App,Controller,ui.fxml必須位於同一個包中,以便FXMLLoader能夠找到它。

相關問題