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 ジグソー アプリケーションでは、クラス ローダーではなく、クラスから直接リソースを取得します。
// Avoid: ComboBoxStyling.class.getClassLoader().getResource("/css/styleclass.css"); // Use: ComboBoxStyling.class.getResource("/css/styleclass.css");
以上がMaven プロジェクトで FXML ファイルを見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。