Übergeben von Paramter bei FXML Aufruf?

MiMa

Top Contributor
Ich möchte jetzt mein model mit dem mit dem nächsten Fenster verbinden und muss das model als Parameter übergeben.
Normalerweise würde ich den Parameter beim Controlleraufruf übergeben.
Aber bei FXML benutze ich ja den FXMLloader
Java:
// Laden der Dateiliste auf der linken Seite
FXMLLoader ladeFX = new FXMLLoader();
ladeFX.setLocation(Indexer.class.getResource("/fenster/links/DateiListe.fxml"));
Der FXMLLoader ruft ja automatisch den Controller auf, da sehe ich jetzt nicht wie ich den Paramter in das nächste Fenster geben soll.
Über eine Tipp würd eich mich sehr freuen.
Danke
Mi
 

mrBrown

Super-Moderator
Mitarbeiter
du kannst aus dem FXMLLoader auch den Controller zurückbekommen, und darauf Setter aufrufen.

Alternativ kannst du den Controller selbst instanziieren und dem FXMLLoader übergeben oder eine Controller-Factory setzen. In beiden Fällen kannst du dann zb dem Konstruktor Argumente übergeben
 

MiMa

Top Contributor
Ich habe versucht den FXMLoader als Ressource Bunde das Objekt mit zu geben.
Das wollte aber so nicht funktionieren.
Den Controller selbst zu instanziieren hört sich gut an, wie mache das denn genau?
 

mrBrown

Super-Moderator
Mitarbeiter
Java:
WieAuchImmerDerControllerHeißt controller = new WieAuchImmerDerControllerHeißt();
ladeFX.setController(controller);
 

MiMa

Top Contributor
Das ist die Aufrufmethpde für die linke Seite der Dateiliste
Java:
  @FXML
    public void initDateiListe(){
        try {
            // Laden der Dateiliste auf der linken Seite
            FXMLLoader ladeFX = new FXMLLoader();
            ladeFX.setLocation(Indexer.class.getResource("/fenster/links/DateiListe.fxml"));
            DateiListeVC dateiListeVC = new DateiListeVC(einstellungen);
            ladeFX.setController(dateiListeVC);
            AnchorPane dateiListe = (AnchorPane) ladeFX.load();           
            // Plazieren der Dateiliste im linken Bereich
            startLayout.setLeft(dateiListe);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } // initDateiListe
Das ist der auf zu rudende Controller
Java:
public class DateiListeVC implements Initializable {
    private static final Logger LOG = (Logger) LogManager.getLogger(DateiListeVC.class);
    // Modell
    Einstellungen einstellungen;
    // GUI Variablen
    @FXML
    public ListView<Datei> dateiListeFenster;

    // Konstruktor
    public DateiListeVC(Einstellungen einstellungen) {
        this.einstellungen = einstellungen;
    } // Konstruktor

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // Einlesen der Dateiliste
        ArrayList<Datei> dateiObjekte = new ArrayList<>();
        // Einlesen der Dateiliste
        dateiObjekte = Datei.einlesenDateiObjekteR(new File("N:/Indexer/Quelle"), dateiObjekte, "");

        ObservableList<Datei> dateien = FXCollections.observableArrayList(dateiObjekte);
        dateiListeFenster.setItems(dateien);
       
        // Den Dateinamen in die ListView setzen
        dateiListeFenster.setCellFactory((ListView<Datei> parameter) -> {
            ListCell<Datei> dateiName = new ListCell<Datei>() {
                @Override
                protected void updateItem(Datei datei, boolean bln) {
                    super.updateItem(datei, bln);
                    if (datei != null) {
                        setText(datei.getDateiName());
                    }
                }
            };
            return dateiName;
        }); // Den Dateinamen in die ListView setzen
    } // initialize
} // DateiListeVC
Da die Dateien für die Liste nicht geladen werden, scheint beim Aufruf des Controllers ein Problem zu geben?
 

MiMa

Top Contributor
Das Model wurde scheinbar korrekt übergeben, die Werte stimmen.
Muss mal sehen warum die Dateiliste nicht angezeigt wird?
 

MiMa

Top Contributor
Das Problem hängt mit dem mit dem Konstruktor "DateiListeVC" zusammen?
Die Dateiliste wird erzeugt, wenn ich den Konstrutor ohne Parameter definiere.
Möchte ich jedoch einen Parameter entgegen nehmen muss ich den Konstruktor ändern
Java:
public DateiListeVC(Einstellungen einstellungen){ ...
Dann funktioniert auch die Übergabe des models, aber die Dateiliste wird nicht mehr erstellt, obwohl sich am Quellpfad nichts geändert hat (erstmal hart codiert)?
Das liegt am FXMLLoader.constructLoadException ??
 
Zuletzt bearbeitet:

MiMa

Top Contributor
Habe das jetzt auf dem Weg versucht den Controller zu holen und eine Methode holeEinstellungen() implementiert
Java:
@FXML
    public void initDateiListe(){
        try {
            FXMLLoader ladeFX = new FXMLLoader();
            // Aufrufen des Controller und übergibt die Einstellungen
//            DateiListeVC dateiListeVC = new DateiListeVC(einstellungen);
//            ladeFX.setController(dateiListeVC);
           
            // Fenster der Dateiliste auf der linken Seite aufrufen
            ladeFX.setLocation(Indexer.class.getResource("/fenster/links/DateiListe.fxml"));
           
            DateiListeVC dateiListeVC = (DateiListeVC)ladeFX.getController();
            dateiListeVC.holeEinstellungen(einstellungen);
           
            AnchorPane dateiListe = (AnchorPane) ladeFX.load();
           
            // Plazieren der Dateiliste im linken Bereich
            startLayout.setLeft(dateiListe);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } // initDateiListe
Der DateiListeViewController
Java:
// Konstruktor
    public DateiListeVC() {
        this.einstellungen = holeEinstellungen(einstellungen);
        LOG.info("Die Einstellungen wurden überschrieben : " + einstellungen.holeQuellPfadVerzeichnis());
//        this.datei = new Datei();
    } // DateiListeVC
Code:
public Einstellungen holeEinstellungen (Einstellungen einstellungen) {
        return einstellungen;
    }
Das Fenster bleibt nicht offen.
Code:
Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at de.michaelmadej.indexer.Indexer.initDateiListe(Indexer.java:101)
    at de.michaelmadej.indexer.Indexer.start(Indexer.java:47)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    ... 1 more
 

MiMa

Top Contributor
Problem gelöst :)
Wie in Post #4 beschrieben.
Musste es um Buch nachlesen wie es funktioniert um dann auch die entsprechende FXML zu modifizieren.

Vielen Dank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
N Braucht man fxml AWT, Swing, JavaFX & SWT 3
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
M mvvm umsetzen ohne fxml AWT, Swing, JavaFX & SWT 0
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
G JavaFX Verständnisfrage mit parametrisierten Methoden und FXML AWT, Swing, JavaFX & SWT 21
Ø Ein FXML-File mehrfach einfügen AWT, Swing, JavaFX & SWT 6
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
OSchriever Auf Stage von FXML-Controller zugreifen AWT, Swing, JavaFX & SWT 12
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
J FXML - Internationalisierung - Behandung key not found AWT, Swing, JavaFX & SWT 39
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
T Fxbefehle aus Main umwandeln in @FXML AWT, Swing, JavaFX & SWT 21
L JavaFX JavaFX, FXML und Guice? AWT, Swing, JavaFX & SWT 0
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
TheWhiteShadow JavaFX Dependencies in fxml AWT, Swing, JavaFX & SWT 17
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
I MediaPlayer (MediaView) in FXML (source) AWT, Swing, JavaFX & SWT 0
I FXML: StackPane als Root-Element AWT, Swing, JavaFX & SWT 5
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
MiMa Wie bettet man Programmcode in JavaFX FXML ein? AWT, Swing, JavaFX & SWT 34
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
T Pfad zur *.fxml AWT, Swing, JavaFX & SWT 8
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX FXML vs. Java Code AWT, Swing, JavaFX & SWT 3
L Liniendiagramme mit FXML: Quellen mit konkreten Beispielen AWT, Swing, JavaFX & SWT 0
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
K JavaFX JavaFX und FXML AWT, Swing, JavaFX & SWT 6
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
U JavaFX Zeichenprogramm mit JavaFX FXML AWT, Swing, JavaFX & SWT 7
B Java FX FXML Textarea SceneBuilder als XML Editor AWT, Swing, JavaFX & SWT 1
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
M Java FX SceneBuilder 2.0, FXML, Controller AWT, Swing, JavaFX & SWT 1
B FXML-Layoutdateien schützen AWT, Swing, JavaFX & SWT 4
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S JavaFX FXML-Editor mit Java 7? AWT, Swing, JavaFX & SWT 2
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
M JavaFX FXML Standartgröße festlegen AWT, Swing, JavaFX & SWT 5
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
D JavaFX @FXML Annotation mit Klassen und Instanzen verbinden? AWT, Swing, JavaFX & SWT 5
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
K JavaFX Erzeugen dynamischer Layouts in fxml AWT, Swing, JavaFX & SWT 3
M JavaFX Stage in einer FXML-Controllerklasse ermitteln? AWT, Swing, JavaFX & SWT 5
G Swing, JavaFx - Felder aus FXML sind null AWT, Swing, JavaFX & SWT 6
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
M Komplexe Eingabenmasken in FXML definieren? AWT, Swing, JavaFX & SWT 17
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
C JavaFX Fxml and stylecheets AWT, Swing, JavaFX & SWT 5
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
Tort-E JavaFX FXML Grundsatzfrage AWT, Swing, JavaFX & SWT 2
K Controls in Controls / Nested fxml AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
S JavaFX FXML AWT, Swing, JavaFX & SWT 3
G JavaFX Fxml AWT, Swing, JavaFX & SWT 2
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
F JavaFX Auf FXML ImageView zugreifen AWT, Swing, JavaFX & SWT 6
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
B JavaFX FXML - Eclipse einrichten AWT, Swing, JavaFX & SWT 2
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
dzim UI aus FXML und Java gemischt - NPE? AWT, Swing, JavaFX & SWT 4
V Guis erstellen mit FXML und javaFX gemischt AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben