We can pass the owner window, primaryStage, to showOpenDialog(primaryStage). Such that it will be blocked while the file dialog is being shown.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package javafx_filechooser; import java.io.File; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage; /** * * @author Seven */ public class JavaFX_FileChooser extends Application { File file; /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(final Stage primaryStage) { primaryStage.setTitle("Hello World!"); final Label labelFile = new Label(); Button btn = new Button(); btn.setText("Open FileChooser'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { FileChooser fileChooser = new FileChooser(); //Open directory from existing directory if(file != null){ File existDirectory = file.getParentFile(); fileChooser.setInitialDirectory(existDirectory); } //Set extension filter FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("AVI files (*.avi)", "*.avi"); fileChooser.getExtensionFilters().add(extFilter); //Show open file dialog, with primaryStage blocked. file = fileChooser.showOpenDialog(primaryStage); labelFile.setText(file.getPath()); } }); VBox vBox = new VBox(); vBox.getChildren().addAll(labelFile, btn); StackPane root = new StackPane(); root.getChildren().add(vBox); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Related article:
- Use FileChooser.showOpenMultipleDialog() to open multi files.
nice entry. good to know there is someone out there dealing with javafx.
ReplyDeletedo you know why the file dialogs stays open even if you close the primary stage ?
I appreciate this example!! Thanks
ReplyDeleteThanks, this helps me alot...!
ReplyDelete