2017-12-27 17 views
0

Gegeben ich habe eine FXML, die ein Formular darstellt, um einen Datensatz zu erstellen. Wenn ich dieses FXML nur für eine CreateRecordController verwende, könnte ich den Controller direkt in der FXML binden und die fx:id s verwenden, um die Steuerelemente an diesen Controller zu binden.JavaFX 8: Wiederverwendung von FXML

Aber was würde ich tun, wenn ich diese FXML für eine EditRecordController auch wiederverwenden möchte? Ich kann zwei Controller in der FXML nicht binden. Gibt es eine Möglichkeit, diese Bindung im FXML Loader zu tun?

Antwort

2

Sie können die Controller-Instanz vor dem Laden der fxml an FXMLLoader übergeben. Dies erfordert das fx:controller Attribut aus der fxml Datei zu fehlen:

Object controller = ... // create an instance of the desired controller class here 

FXMLLoader loader = new FXMLLoader(getClass().getResource("/some/path/myfxml.fxml")); 
loader.setController(controller); 

Node root = loader.load(); 

Hinweis: Bindung der falsche Begriff hier ist, da Sie den Controller an jede javafx Eigenschaft nicht vergeben.