2013-04-12 5 views
7

Es gibt zwei verschiedene Phasen in meiner Anwendung, die Hilfebildschirme sind, die dieselbe FXML-Datei verwenden. Anstatt zwei FXML-Dateien zu erstellen, möchte ich nur einen verwenden und zwei Controller haben, die dasselbe fxml aufrufen.JavaFX 1 FXML-Datei mit mehreren verschiedenen Controllern?

Das einzige Problem ist, dass der Controller in der FXML-Datei zugewiesen ist. Gibt es eine Möglichkeit, den zugewiesenen Controller mit Code in der Controller-Klasse selbst zu ändern?

Ich möchte wirklich vermeiden, eine FXML-Datei zu duplizieren, nur um den Controller in jedem zu ändern. Danke im Voraus.


Antwort

7

Sie können die fx:controller="" Zuordnung aus der FXML Datei entfernen und die Steuerung über die FXMLLoader während der Belastung zu.

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

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

Überprüfen Sie die Introduction to FXML section on custom components.

+0

Mit diesem Ansatz können Sie keine @ FXML-Tags verwenden. Sie müssen sie alle manuell festlegen, was bei geschachtelten Sichten sehr angenehm sein kann. – Kiril