2013-04-12 15 views
7

Istnieją dwa różne etapy w mojej aplikacji, które są ekranami pomocy, które używają tego samego pliku FXML. Zamiast tworzyć 2 pliki FXML, chciałbym użyć tylko jednego i mieć dwa kontrolery, które wywołują ten sam plik fxml.JavaFX 1 plik FXML z wieloma różnymi kontrolerami?

Jedynym problemem jest to, że kontroler jest przypisany w pliku FXML. Czy istnieje sposób na zmianę przypisanego kontrolera z kodem w samej klasie Controller?

Naprawdę chciałbym uniknąć duplikowania pliku FXML tylko po to, aby zmienić kontroler w każdym z nich. Z góry dziękuję.


Odpowiedz

7

Można usunąć przypisanie fx:controller="" z pliku FXML i przypisać kontroler poprzez FXMLLoader podczas obciążenia.

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

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

Zapoznaj się z Introduction to FXML section on custom components.

+0

Stosowanie tego podejścia uniemożliwia używanie znaczników '@ FXML'. Musisz ustawić je wszystkie ręcznie, co może być uciążliwe przy zagnieżdżonych widokach. – Kiril

Powiązane problemy