Heim  >  Artikel  >  Java  >  Wie finde ich FXML-Dateien in Maven-Projekten?

Wie finde ich FXML-Dateien in Maven-Projekten?

Barbara Streisand
Barbara StreisandOriginal
2024-11-18 21:03:02539Durchsuche

How to Locate FXML Files in Maven Projects?

Referenzieren von FXML-Dateien aus Maven-Projekten

In Ihrer JavaFX-Anwendung möchten Sie FXML-Dateien aus dem Ressourcenordner laden, indem Sie Code wie den folgenden verwenden:

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

Während sich Ihr Ressourcenordner im Build-Pfad befindet, treten Fehler auf. Um dieses Problem zu lösen, erkunden wir die Optionen zum Auffinden von FXML-Dateien.

Generische Ressourcensuche in Java/JavaFX

Denken Sie daran, dass die FXML-Dateispeicherortsuche eine Teilmenge der generischen Ressourcensuche in Java ist. Ressourcendateien (einschließlich FXML-Dateien) werden relativ zu Ihrem Klassenpfad angegeben. Eine umfassende Anleitung finden Sie unter:

  • JavaFX Resource Lookup: https://javafx-docs.github.io/javafx-docs/javafx/2.2/resources/resource_lookup.htm
  • Eden-Guide: https://edencoding.com/javafx-resource-files

Beispielverwendung

Der folgende Codeausschnitt veranschaulicht das Laden einer FXML-Datei:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/main.fxml"));
Parent content = loader.load();

Speicherort Auflösungsoptionen

Es gibt mehrere Optionen zum Angeben des FXML-Dateispeicherorts innerhalb Ihrer Ressource Ordner:

1. Platzieren Sie alle FXML-Dateien in src/main/resources:

loader.setLocation(getClass().getResource("/main.fxml"));

2. Platzieren Sie FXML-Dateien in src/main/resources/fxml:

loader.setLocation(getClass().getResource("/fxml/main.fxml"));

3. Platzieren Sie FXML-Dateien in den entsprechenden Ressourcenverzeichnissen:

Angenommen, Ihre Klasse, die die FXML lädt, befindet sich in src/main/java/com/mycompany/myapp, können Sie die FXML-Datei ablegen in:

src/main/resources/com/mycompany/myapp/main.fxml

Und laden Sie es mit:

loader.setLocation(getClass().getResource("main.fxml"));

FXMLLoader-Nutzung Empfehlungen

  • Instanziieren Sie FXMLLoader über den neuen FXMLLoader(), nicht über statische Methoden.
  • Legen Sie den Speicherort auf dem instanziierten FXMLLoader fest und rufen Sie load() auf, anstatt ihn aus einem Stream zu laden.
  • Verwenden Sie getClass().getResource(), um eine URL-basierte abzuleiten Speicherort.

IDE- und Build-Einstellungen

Stellen Sie sicher, dass Ihre IDE oder Ihr Build-Tool FXML-Dateien aus dem Ressourcenverzeichnis in das Build-Ausgabeverzeichnis kopiert. Um dies zu verwalten, lesen Sie die Anleitung zu den Intellij-Einstellungen: https://stackoverflow.com/questions/25232751/how-to-convert-a-normal-java-project-in-intellij-into-a-javafx-project.

Java Jigsaw Modular Applications

In Java Jigsaw-Anwendungen erhalten Sie Ressourcen direkt von der Klasse, nicht von der Klasse Lader.

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

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

Das obige ist der detaillierte Inhalt vonWie finde ich FXML-Dateien in Maven-Projekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn