首頁  >  文章  >  Java  >  如何在 Maven 專案中找到 FXML 檔案?

如何在 Maven 專案中找到 FXML 檔案?

Barbara Streisand
Barbara Streisand原創
2024-11-18 21:03:02519瀏覽

How to Locate FXML Files in Maven Projects?

從Maven 專案引用FXML 檔案

在JavaFX 應用程式中,您的目標是使用以下程式碼從資源資料夾載入FXML 檔案:

FXMLLoader.load(getClass().getResource("main.fxml"));

當您的資源資料夾位於建置路徑中時,您會遇到錯誤。為了解決這個問題,讓我們來探索一下定位 FXML 檔案的選項。

Java/JavaFX 中的通用資源查找

回想一下,FXML 檔案位置查找是 Java 中通用資源查找的子集。資源檔案(包括 FXML 檔案)是相對於類別路徑指定的。如需全面指南,請參閱:

  • JavaFX 資源尋找:https://javafx-docs.github.io/javafx-docs/javafx/2.2/resources/resource_lookup.htm
  • Eden指南:https://edencoding.com/javafx-resource-files

使用範例

以下程式碼片段示範了載入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"));

FXMLLoader 使用建議

  • 透過 new FXMLLoader() 實例化 FXMLLoader,而不是靜態方法。
  • 設定實例化的 FXMLLoader 上的位置並呼叫 load(),而不是從流載入。
  • 使用 getClass().getResource() 衍生基於 URL 的位置。

IDE和建置設定

確保您的 IDE 或建置工具將 FXML 檔案從資源目錄複製到建置輸出目錄。請參閱 Intellij 設定指南來管理此問題:https://stackoverflow.com/questions/25232751/how-to-convert-a-normal-java-project-in-intellij-into-a-javafx-project。

Java Jigsaw 模組化應用程式

在 Java Jigsaw 應用程式中,直接從類別取得資源,而不是類別載入器。

// Avoid:
ComboBoxStyling.class.getClassLoader().getResource("/css/styleclass.css");

// Use:
ComboBoxStyling.class.getResource("/css/styleclass.css");

以上是如何在 Maven 專案中找到 FXML 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn