2014-09-13 12 views
8

Ho il codice seguente:JavaFX - Come ottenere il controller FXML?

Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml")); 

nel file fxml c'è un riferimento alla classe di controllo. Come posso ottenere l'oggetto controller?


fxml:

<AnchorPane id="AnchorPane" fx:id="root" 
    prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" 
    xmlns="http://javafx.com/javafx/2.2" 
    fx:controller="br.meuspila.javafx.JanelaPrincipalController"> 
    ... 

risposta

26

istanziare un FXMLLoader e utilizzare un metodo di caricamento esempio piuttosto che un metodo di carico statico classe. È quindi possibile recuperare l'istanza del controllore dall'istanza del caricatore.

FXMLLoader loader = new FXMLLoader(
    getClass().getResource(
    "customerDialog.fxml" 
) 
); 

Pane pane = (Pane) loader.load(); 

CustomerDialogController controller = 
    loader.<CustomerDialogController>getController(); 
controller.initData(customer); 

Per maggiori informazioni vedi:

+1

Questo è esattamente quello che mi serve. Grazie! – ceklock

+1

Questo è veramente utile. Grazie –

+0

sì, questa è stata una risposta molto utile! Assicurati inoltre che quando stai creando un'istanza della classe FXMLLoader, lo faccia come mostrato in questa risposta (specificando anche il file .fxml). Lo stavo facendo solo come nuovo FXMLLoader(); e che stava dando a me un'eccezione di puntatore Null più tardi quando ho provato ad accedere al controller per il file modello fxml. – user2407334

Problemi correlati