How do I open the JavaFX FileChooser from a controller class?

Electric Coffee picture Electric Coffee · Aug 25, 2014 · Viewed 45.8k times · Source

My problem is that all the examples of using FileChooser requires you to pass in a stage. Only problem is that my UI is defined in an fxml file, which uses a controller class separate from the main stage.

@FXML protected void locateFile(ActionEvent event) {
    FileChooser chooser = new FileChooser();
    chooser.setTitle("Open File");
    chooser.showOpenDialog(???);
}

What do I put at the ??? to make it work? Like I said, I don't have any references to any stages in the controller class, so what do I do?

Answer

James_D picture James_D · Aug 25, 2014

For any node in your scene (for example, the root node; but any node you have injected with @FXML will do), do

chooser.showOpenDialog(node.getScene().getWindow());