在JavaFX 應用程式中,您的目標是使用以下程式碼從資源資料夾載入FXML 檔案:
FXMLLoader.load(getClass().getResource("main.fxml"));
當您的資源資料夾位於建置路徑中時,您會遇到錯誤。為了解決這個問題,讓我們來探索一下定位 FXML 檔案的選項。
回想一下,FXML 檔案位置查找是 Java 中通用資源查找的子集。資源檔案(包括 FXML 檔案)是相對於類別路徑指定的。如需全面指南,請參閱:
以下程式碼片段示範了載入FXML 檔案:
FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("/main.fxml")); Parent content = loader.load();
有多個選項可用於指定資源資料夾中的FXML檔案位置:
1.將所有 FXML 檔案放在 src/main/resources:
loader.setLocation(getClass().getResource("/main.fxml"));
2.將 FXML 檔案放入src/main/resources/fxml:
loader.setLocation(getClass().getResource("/fxml/main.fxml"));
3.將FXML檔案放在對應的資源目錄中:
假設您載入FXML的類別位於src/main/java/com/mycompany/myapp,則可以將FXML檔案放在:
src/main/resources/com/mycompany/myapp/main.fxml
並使用以下方式載入它:
loader.setLocation(getClass().getResource("main.fxml"));
確保您的 IDE 或建置工具將 FXML 檔案從資源目錄複製到建置輸出目錄。請參閱 Intellij 設定指南來管理此問題:https://stackoverflow.com/questions/25232751/how-to-convert-a-normal-java-project-in-intellij-into-a-javafx-project。
在 Java Jigsaw 應用程式中,直接從類別取得資源,而不是類別載入器。
// Avoid: ComboBoxStyling.class.getClassLoader().getResource("/css/styleclass.css"); // Use: ComboBoxStyling.class.getResource("/css/styleclass.css");
以上是如何在 Maven 專案中找到 FXML 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!