Le Tutoriel de JavaFX FileChooser et DirectoryChooser
1. JavaFX FileChooser, DirectoryChooser
FileChooser permet aux utilisateurs de naviguer dans le système des fichiers pour choisir un ou plusieurs fichiers. Une composition similaire est DirectoryChooser qui permet aux utilisateurs de sélectionner un dossier.
Voici l'image de FileChooser/DirectoryChooser lorsqu'il fonctionne sur différents systèmes d'exploitation.
Mac OS
Windows
Linux
2. L'exemple de FileChooser
L'exemple suivant: lorsque l'utilisateur clique sur le button, un FileChooser affichera à sélectionner le fichier et l'ouvrira.
OpenFileChooserDemo.java
package org.o7planning.javafx.filechooser;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javafx.application.Application;
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.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class OpenFileChooserDemo extends Application {
private Desktop desktop = Desktop.getDesktop();
@Override
public void start(Stage primaryStage) throws Exception {
final FileChooser fileChooser = new FileChooser();
TextArea textArea = new TextArea();
textArea.setMinHeight(70);
Button button1 = new Button("Select One File and Open");
Button buttonM = new Button("Select Multi Files");
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textArea.clear();
File file = fileChooser.showOpenDialog(primaryStage);
if (file != null) {
openFile(file);
List<File> files = Arrays.asList(file);
printLog(textArea, files);
}
}
});
buttonM.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textArea.clear();
List<File> files = fileChooser.showOpenMultipleDialog(primaryStage);
printLog(textArea, files);
}
});
VBox root = new VBox();
root.setPadding(new Insets(10));
root.setSpacing(5);
root.getChildren().addAll(textArea, button1, buttonM);
Scene scene = new Scene(root, 400, 200);
primaryStage.setTitle("JavaFX FileChooser (o7planning.org)");
primaryStage.setScene(scene);
primaryStage.show();
}
private void printLog(TextArea textArea, List<File> files) {
if (files == null || files.isEmpty()) {
return;
}
for (File file : files) {
textArea.appendText(file.getAbsolutePath() + "\n");
}
}
private void openFile(File file) {
try {
this.desktop.open(file);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Application.launch(args);
}
}
3. L'exemple de DirectoryChooser
Par exemple,utilisez DirectoryChooser pour sélectionner un dossier :
DirectoryChooserDemo.java
package org.o7planning.javafx.filechooser;
import java.io.File;
import javafx.application.Application;
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.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
public class DirectoryChooserDemo extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final DirectoryChooser directoryChooser = new DirectoryChooser();
configuringDirectoryChooser(directoryChooser);
TextArea textArea = new TextArea();
textArea.setMinHeight(70);
Button button = new Button("Open DirectoryChooser and select a directory");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
File dir = directoryChooser.showDialog(primaryStage);
if (dir != null) {
textArea.setText(dir.getAbsolutePath());
} else {
textArea.setText(null);
}
}
});
VBox root = new VBox();
root.setPadding(new Insets(10));
root.setSpacing(5);
root.getChildren().addAll(textArea, button);
Scene scene = new Scene(root, 400, 200);
primaryStage.setTitle("JavaFX DirectoryChooser (o7planning.org)");
primaryStage.setScene(scene);
primaryStage.show();
}
private void configuringDirectoryChooser(DirectoryChooser directoryChooser) {
// Set title for DirectoryChooser
directoryChooser.setTitle("Select Some Directories");
// Set Initial Directory
directoryChooser.setInitialDirectory(new File(System.getProperty("user.home")));
}
public static void main(String[] args) {
Application.launch(args);
}
}
4. Configuration de FileChooser, DirectoryChooser
Vous pouvez définir le titre pour FileChooser/DirectoryChooser et les dossiers affichés par défaut lorsque l'utilisateur ouvre FileChooser/DirectoryChooser.
// Set title for FileChooser
fileChooser.setTitle("Select Some Files");
// Set Initial Directory
fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
ConfiguringFileChooserDemo.java
package org.o7planning.javafx.filechooser;
import java.io.File;
import javafx.application.Application;
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.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class ConfiguringFileChooserDemo extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final FileChooser fileChooser = new FileChooser();
configuringFileChooser(fileChooser);
TextArea textArea = new TextArea();
textArea.setMinHeight(70);
Button button = new Button("Open File Chooser and select some files");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
fileChooser.showOpenDialog(primaryStage);
}
});
VBox root = new VBox();
root.setPadding(new Insets(10));
root.setSpacing(5);
root.getChildren().addAll(button);
Scene scene = new Scene(root, 400, 200);
primaryStage.setTitle("JavaFX FileChooser (o7planning.org)");
primaryStage.setScene(scene);
primaryStage.show();
}
private void configuringFileChooser(FileChooser fileChooser) {
// Set title for FileChooser
fileChooser.setTitle("Select Some Files");
// Set Initial Directory
fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
}
public static void main(String[] args) {
Application.launch(args);
}
}
5. Définir les filtres FileChooser
Ensuite, vous pouvez configurer FileChooser en ajoutant des filtres pour déterminer quels types de fichiers seront affichés sur FileChooser. Par exemple créez 3 filtres, le filtre ALL affiche tous les types de fichiers, le filtre PNG affiche uniquement les images png et le filtre JPG affiche uniquement les images du format jpg.
// Add Extension Filters
fileChooser.getExtensionFilters().addAll(//
new FileChooser.ExtensionFilter("All Files", "*.*"),
new FileChooser.ExtensionFilter("JPG", "*.jpg"),
new FileChooser.ExtensionFilter("PNG", "*.png"));
The filters:
Le filtre ALL- Affiche tous les types de fichiers et dossiers.
Le filtre PNG ne monstre que les images png ou les dossiers.
Voyezr l'exemple complet
FilterFileChooserDemo.java
package org.o7planning.javafx.filechooser;
import java.io.File;
import javafx.application.Application;
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.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class FilterFileChooserDemo extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final FileChooser fileChooser = new FileChooser();
configuringFileChooser(fileChooser);
TextArea textArea = new TextArea();
textArea.setMinHeight(70);
Button button = new Button("Select some Pictures");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
fileChooser.showOpenDialog(primaryStage);
}
});
VBox root = new VBox();
root.setPadding(new Insets(10));
root.setSpacing(5);
root.getChildren().addAll(button);
Scene scene = new Scene(root, 400, 200);
primaryStage.setTitle("JavaFX FileChooser (o7planning.org)");
primaryStage.setScene(scene);
primaryStage.show();
}
private void configuringFileChooser(FileChooser fileChooser) {
// Set title for FileChooser
fileChooser.setTitle("Select Pictures");
// Set Initial Directory
fileChooser.setInitialDirectory(new File("C:/Users/tran/Pictures"));
// Add Extension Filters
fileChooser.getExtensionFilters().addAll(//
new FileChooser.ExtensionFilter("All Files", "*.*"), //
new FileChooser.ExtensionFilter("JPG", "*.jpg"), //
new FileChooser.ExtensionFilter("PNG", "*.png"));
}
public static void main(String[] args) {
Application.launch(args);
}
}
Tutoriels de JavaFX
- Ouvrir une nouvelle fenêtre (Window) dans JavaFX
- Le Tutoriel de JavaFX ChoiceDialog
- Le Tutoriel de JavaFX Alert Dialog
- Le Tutoriel de JavaFX TextInputDialog
- Installer e(fx)clipse pour Eclipse (Outillage JavaFX)
- Installer JavaFX Scene Builder pour Eclipse
- Tutoriel JavaFX pour débutant - Hello JavaFX
- Le Tutoriel de JavaFX FlowPane Layout
- Le Tutoriel de JavaFX TilePane Layout
- Le Tutoriel de JavaFX HBox et VBox Layout
- Le Tutoriel de JavaFX BorderPane Layout
- Le Tutoriel de JavaFX AnchorPane Layout
- Le Tutoriel de JavaFX TitledPane
- Le Tutoriel de JavaFX Accordion
- Le Tutoriel de JavaFX ListView
- Le Tutoriel de JavaFX Group
- Le Tutoriel de JavaFX ComboBox
- Transformations dans JavaFX
- Les effets (effects) dans JavaFX
- Le Tutoriel de JavaFX GridPane Layout
- Le Tutoriel de JavaFX StackPane Layout
- Le Tutoriel de JavaFX ScrollPane
- Le Tutoriel de JavaFX WebView et WebEngine
- Le Tutoriel de JavaFX HTMLEditor
- Le Tutoriel de JavaFX TableView
- Le Tutoriel de JavaFX TreeView
- Le Tutoriel de JavaFX TreeTableView
- Le Tutoriel de JavaFX Menu
- Le Tutoriel de JavaFX ContextMenu
- Le Tutoriel de JavaFX Image et ImageView
- Le Tutoriel de JavaFX Label
- Le Tutoriel de JavaFX Hyperlink
- Le Tutoriel de JavaFX Button
- Le Tutoriel de JavaFX ToggleButton
- Le Tutoriel de JavaFX RadioButton
- Le Tutoriel de JavaFX MenuButton et SplitMenuButton
- Le Tutoriel de JavaFX TextField
- Le Tutoriel de JavaFX PasswordField
- Le Tutoriel de JavaFX TextArea
- Le Tutoriel de JavaFX Slider
- Le Tutoriel de JavaFX Spinner
- Le Tutoriel de JavaFX ProgressBar et ProgressIndicator
- Le Tutoriel de JavaFX ChoiceBox
- Le Tutoriel de JavaFX Tooltip
- Le Tutoriel de JavaFX DatePicker
- Le Tutoriel de JavaFX ColorPicker
- Le Tutoriel de JavaFX FileChooser et DirectoryChooser
- Le Tutoriel de JavaFX PieChart
- Le Tutoriel de JavaFX AreaChart et StackedAreaChart
- Le Tutoriel de JavaFX BarChart et StackedBarChart
- Le Tutoriel de JavaFX Line
- Le Tutoriel de JavaFX Rectangle et Ellipse
Show More