2013-04-12 5 views
7

Ci sono due diversi stadi nella mia applicazione che sono schermate di aiuto che usano lo stesso file FXML. Piuttosto che creare 2 file FXML, vorrei usare solo uno e avere due controller che chiamano lo stesso fxml.File FXML JavaFX 1 con più controller diversi?

L'unico problema è che il controller è assegnato nel file FXML. Quindi, c'è un modo per cambiare il controller assegnato con il codice nella classe Controller stessa?

Vorrei davvero evitare di duplicare un file FXML solo per cambiare il controller in ciascuno. Grazie in anticipo.


risposta

7

È possibile rimuovere l'assegnazione fx:controller="" dal file FXML e assegnare il controller tramite il FXMLLoader durante il carico.

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Your.fxml")); 
fxmlLoader.setController(this); 

try 
{ 
    fxmlLoader.load(); 
} 
catch (IOException exception) 
{ 
    throw new RuntimeException(exception); 
} 

Verificare il Introduction to FXML section on custom components.

+0

L'utilizzo di questo approccio impedisce l'utilizzo dei tag '@ FXML'. Devi impostarli tutti manualmente, il che può essere complicato quando si hanno viste nidificate. – Kiril