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

Wie finde ich FXML-Dateien in Maven-Projekten?

Barbara Streisand
Freigeben: 2024-11-18 21:03:02
Original
600 Leute haben es durchsucht

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"));
Nach dem Login kopieren

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();
Nach dem Login kopieren

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"));
Nach dem Login kopieren

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

loader.setLocation(getClass().getResource("/fxml/main.fxml"));
Nach dem Login kopieren

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
Nach dem Login kopieren

Und laden Sie es mit:

loader.setLocation(getClass().getResource("main.fxml"));
Nach dem Login kopieren

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");
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage