JavaFX 1 FXML File with Multiple Different Controllers?


Question

There are two different stages in my application that are help screens that use the same FXML file. Rather than create 2 FXML files, I would like to use just one and have two controllers that call the same fxml.

The only problem is that the Controller is assigned in the FXML file. So, is there a way to change the assigned controller with code in the Controller class itself?

I'd really like to avoid duplicating an FXML file just to change the Controller in each. Thanks in advance.


1
7
9/15/2013 8:02:57 PM

Accepted Answer

You can remove the fx:controller="" assignment from the FXML file and assign the controller via the FXMLLoader during the load.

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

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

Check out the Introduction to FXML section on custom components.

7
4/12/2013 1:03:41 PM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon