[英]JavaFX FXML File takes exactly 1 second to load
我正在JavaFX中構建應用程序,並且正在為布局加載FXML文件。 一開始,我所有的.fxml文件都位於我的java類路徑中。
由於我是一個游戲引擎,所以我決定將所有內容移到類路徑之外,因此現在有了一個文件系統,如下所示:
Folder[javafx]
editor.fxml
program.jar
這就是我加載FXML的方式
FXMLLoader.load(new URL("file:////" + System.getProperty("jdir") + "/javafx/" + name + ".fxml"));
它可能看起來不漂亮,但是可以工作(System.getProperty(“ jdir”)只是光盤上.jar的位置)。 Java找到了文件,但在每個文件上總是要花一秒鍾的時間(FXML文件大小從1kb到6kb)
所以我現在遇到的問題是我的FXML加載時間太長。 回到我將FXML放在類路徑中時,沒有延遲。
我希望有人可以幫助我消除此延遲,或者幫助我解決如何從.jar加載FXML的問題(據我所知,您只能通過Streams從jar加載資源,但是FXMLLoader不接受流,因此我被卡住了。)
首先,您可以將System.getProperty(“ jdir”)移到外面,因為這樣每次加載fxml時都會調用它。
所以代替
FXMLLoader.load(new URL("file:////" + System.getProperty("jdir") + "/javafx/" + name + ".fxml"));
做類似的事情:
String jdirProp = System.getProperty("jdir");
然后在隨后的所有調用中重用此值。
FXMLLoader.load(new URL("file:////" + jdirProp + "/javafx/" + name + ".fxml"));
但是問題是,為什么不將fxml文件放在資源下,然后調用:
FXMLLoader.load(getClass().getResource("yourfile.fxml"));
這是最快,最優雅的方式。 延遲是由以下事實造成的:您的jar未由類加載器加載(因為它不在類路徑上)並且資源不容易獲得,因此在您可以使用jar文件內容之前會有一些延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.