/* * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. */ package helloworld; import java.io.File; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import javafx.stage.Stage; public final class HelloFileChooser extends Application { @Override public void start(final Stage stage) { stage.setTitle("Hello File Chooser"); final Label titleLabel = new Label("Title:"); final TextField titleTextField = new TextField(); final Label directoryLabel = new Label("Initial directory:"); final Pane directoryPanel = new HBox(6); final TextField directoryTextField = new TextField(); // directoryTextField.setEditable(false); final Button browseButton = new Button("..."); directoryPanel.getChildren().addAll(directoryTextField, browseButton); browseButton.setOnAction( new EventHandler() { @Override public void handle(final ActionEvent e) { final DirectoryChooser directoryChooser = new DirectoryChooser(); final String initialDirectory = directoryTextField.getText(); directoryChooser.setInitialDirectory( (initialDirectory.length() > 0) ? new File(initialDirectory) : null); final File selectedDirectory = directoryChooser.showDialog(stage); if (selectedDirectory != null) { directoryTextField.setText( selectedDirectory.getAbsolutePath()); } } }); final Label fileTypesLabel = new Label("File Types:"); final ChoiceBox fileTypesChoiceBox = new ChoiceBox( FXCollections.observableArrayList( new FileTypeRecord("All Files", "*.*"), new FileTypeRecord("Text Files", "*.txt"))); fileTypesChoiceBox.getSelectionModel().selectFirst(); final GridPane inputGridPane = new GridPane(); GridPane.setConstraints(titleLabel, 0, 0); GridPane.setConstraints(titleTextField, 1, 0); GridPane.setConstraints(directoryLabel, 0, 1); GridPane.setConstraints(directoryPanel, 1, 1); GridPane.setConstraints(fileTypesLabel, 0, 2); GridPane.setConstraints(fileTypesChoiceBox, 1, 2); inputGridPane.setHgap(6); inputGridPane.setVgap(6); inputGridPane.getChildren().addAll(titleLabel, titleTextField, directoryLabel, directoryPanel, fileTypesLabel, fileTypesChoiceBox); final FileChooser fileChooser = new FileChooser(); final Button openButton = new Button("Open..."); final Button openMultipleButton = new Button("Open Multiple..."); final Button saveButton = new Button("Save..."); openButton.setOnAction( new EventHandler() { @Override public void handle(final ActionEvent e) { configureFileChooser(fileChooser, titleTextField.getText(), directoryTextField.getText(), fileTypesChoiceBox .getSelectionModel() .getSelectedItem()); System.out.println(fileChooser.showOpenDialog(stage)); } }); openMultipleButton.setOnAction( new EventHandler() { @Override public void handle(final ActionEvent e) { configureFileChooser(fileChooser, titleTextField.getText(), directoryTextField.getText(), fileTypesChoiceBox .getSelectionModel() .getSelectedItem()); System.out.println( fileChooser.showOpenMultipleDialog(stage)); } }); saveButton.setOnAction( new EventHandler() { @Override public void handle(final ActionEvent e) { configureFileChooser(fileChooser, titleTextField.getText(), directoryTextField.getText(), fileTypesChoiceBox .getSelectionModel() .getSelectedItem()); System.out.println(fileChooser.showSaveDialog(stage)); } }); final Pane buttonPanel = new HBox(6); buttonPanel.getChildren().addAll(openButton, openMultipleButton, saveButton); final Pane rootGroup = new VBox(12); rootGroup.getChildren().addAll(inputGridPane, buttonPanel); rootGroup.setPadding(new Insets(12, 12, 12, 12)); stage.setScene(new Scene(rootGroup)); stage.show(); } public static void main(String[] args) { Application.launch(args); } private static void configureFileChooser( final FileChooser fileChooser, final String title, final String initialDirectory, final FileTypeRecord fileTypeRecord) { fileChooser.setTitle(title); fileChooser.setInitialDirectory( (initialDirectory.length() > 0) ? new File(initialDirectory) : null); fileChooser.getExtensionFilters().setAll(fileTypeRecord.getFilter()); } private static final class FileTypeRecord { private final FileChooser.ExtensionFilter filter; public FileTypeRecord(final String description, final String extension) { filter = new FileChooser.ExtensionFilter(description, extension); } public FileChooser.ExtensionFilter getFilter() { return filter; } @Override public String toString() { return filter.getDescription(); } } }