JavaFX Methode nach initialize() aufrufen

MarkusM

Aktives Mitglied
Hallo zusammen,

ich habe einem FXML Controller beim Erzeugen eine Klasse übergeben:

Java:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sample/views/xxx.fxml" ));
Controller viewController = loader.getController();
viewController.setApc(apc);

Nun habe ich das Problem, dass ich in der initialize() Methode des Controllers auf Methoden der übergebenen Klasse zugreifen muss. Dies geht natürlich nicht, da diese zu dem Zeitpunkt noch nicht zur Verfügung steht => NPE

Kriege ich dies irgendwie gelöst? Bzw. gibt es eine Methode die der initialize() unmittelbar folgt?
 

Flown

Administrator
Mitarbeiter
Du solltest dir auf jedenfall die FXMLLoader::setControllerFactory ansehen, da kannst du dir deinen Controller selber bauen.
 

dzim

Top Contributor
Wenn du dir den Code des FXMLLoader anschaust, zum Beispiel auf GrepCode - http://grepcode.com/file/repo1.mave...8.0-ea-b96.1/javafx/fxml/FXMLLoader.java#2351 - in der (im Link bereits ausgewählten) Zeile #2351 wird die #initialize-Methode aufgerufen. Und nur diese.
Einizg noch interessant ist, dass es noch weitere Hinweise auf Methoden-Aufrufe gibt, diese scheinen sich aber meist auf Controller-spezifische Methoden (ich meine damit die Handler für Buttons, etc.) zu beeziehen. Du könntest es ja einfach einmal ausprobieren, was passiert, wenn du eine beliebige Methode mit @FXML annotierst, ob diese z.B. einen Aufruf System.out.println("bla");

Ich kann dir also nur empfehlen, den Teil der #initialize-Methode in deinen bisherigen Setter (#setApc) einzupflegen - und diesen eventuell etwas sprechender umzubenennen.
 

dzim

Top Contributor
@Flown Gut, das ginge natürlich auch, aber dann muss man sich auch um die Initialisierung seiner Controller-Instanz kümmern. Das ist im einfachsten Fall ja nur ein "new <KlassenName>" und wird erst dann komplizierter, wenn der Loader wiederverwendet wird. Und dann wirst du die Instanz erstellen, hast aber noch keine Buttons etc. (die sind dann alle noch null). Du ( @MarkusM ) kannst dies also in erster Linie nutzen, um deine Dependencies schon rein zu "injecten", aber der eigentliche Aufruf der #initialize kommt irgendwann danach und dort solltest du dann mit der Variable aus #setApc arbeiten können.

Ich habe die von @Flown vorgeschlagene Variante einmal im Zusammenspiel mit Spring Boot verwendet, um die Spring-Dependency-Injection verwenden zu können.
 

Flown

Administrator
Mitarbeiter
@dzim die Standard-ControllerFactory ist null und wenn das passiert wird: ReflectUtil.newInstance(clazz); aufgerufen. Was nichts anderes macht als clazz.newInstance(). Also sehe ich keinen Grund das nicht zu übernehmen und dann noch den setter aufzurufen.

Aber ich gebe dir recht, dass man den Code auslagern sollte und erst bei Verfügbarkeit dieses "Apc" ausführen sollte.
 

dzim

Top Contributor
@Flown Nein, du hast schon recht. Die Variante ist sogar im Nachhinein betrachtet die wahrscheinlich bessere Wahl! (Ich hab nur einfach nicht sofort an diese gedacht! ;))
 

MarkusM

Aktives Mitglied
Sorry für die späte Antwort und lieben Dankl für Eure Anregungen. Ich habe einen anderen "Designweg" für meine Anwendung gefunden, werde mir die Hinweise aber definitiv zu Gemüte führen! Vielen Dank!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
J Swing JTable - nach Sortieren andere Methode aufrufen AWT, Swing, JavaFX & SWT 2
F setIcon wird erst nach der methode ausgeführt AWT, Swing, JavaFX & SWT 4
S Swing PopUp oeffnet sich nach der Methode, die erst nach Fensteraufruf gestartet wird AWT, Swing, JavaFX & SWT 3
K JDialog - Methode nach setVisible() aufrufen AWT, Swing, JavaFX & SWT 4
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
M passende Reflexion-Methode?? AWT, Swing, JavaFX & SWT 1
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
M Swing Methode datenLesen() greift auf catchBlock zu? AWT, Swing, JavaFX & SWT 25
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
Z Methode bei Boolean change neu Ausführen AWT, Swing, JavaFX & SWT 9
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
J Rekursive Methode JProgressBar AWT, Swing, JavaFX & SWT 4
A Methode pausieren bis anderes Ereignis ausgeführt AWT, Swing, JavaFX & SWT 2
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
I Methode Draw3DRect und DrawRect AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
K Methode repaint() AWT, Swing, JavaFX & SWT 1
A Methode in bestimmten Intervall ausführen AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
P keyTyped-Methode AWT, Swing, JavaFX & SWT 1
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S PaintIn - Methode AWT, Swing, JavaFX & SWT 1
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Auf Methode zugreifen (am Schlauch steh) AWT, Swing, JavaFX & SWT 5
D Swing DefaultTableModel setValueAt Methode AWT, Swing, JavaFX & SWT 7
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
T Swing JPanel - "Open" Methode? AWT, Swing, JavaFX & SWT 6
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Applet Bricht Methode zwischendruch ab AWT, Swing, JavaFX & SWT 11
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable's valueChanged Methode überschreiben AWT, Swing, JavaFX & SWT 2
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
N Methode zum Prüfen ob Jtextfield verändert worden ist AWT, Swing, JavaFX & SWT 2
K beim Schließen des JFrames, Methode aufrufen AWT, Swing, JavaFX & SWT 3
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
P Swing JPanel über Methode setzen AWT, Swing, JavaFX & SWT 2
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
T Swing setText()-Methode Funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JLabel Methode setText funktioniert nicht AWT, Swing, JavaFX & SWT 5
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
S Visual Editor mit main Methode AWT, Swing, JavaFX & SWT 3
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14
F Swing JFrame Methode beim Schließen aufrufen AWT, Swing, JavaFX & SWT 5
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
S Methode fireTableDataChanged() AWT, Swing, JavaFX & SWT 2
Y Swing Problem mit Main Methode AWT, Swing, JavaFX & SWT 8
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben