Java FX Partie10
Java FX Partie10
Java FX Partie10
JavaFX
10 - Botes de dialogue
(simples et spcialises)
Jacques BAPST
jacques.bapst@hefr.ch
Dfinition [1]
Les botes de dialogue sont des lments d'une interface graphique
qui se prsentent gnralement sous la forme d'une fentre affiche
par une application (ou ventuellement par le systme d'exploitation)
dans le but :
d'informer l'utilisateur (texte, mise en garde, graphique, etc.)
d'obtenir une information de l'utilisateur (mot-de-passe, choix, etc.)
ou une combinaison des deux
Une bote de dialogue dpend d'une autre fentre (v. d'une autre
bote de dialogue), c'est ce qui distingue ce composant d'une fentre
indpendante (la fentre principale par exemple).
IHM-1 FX10
Jacques BAPST
Modal / Non-modal
Une bote de dialogue peut tre
Modale
Jacques BAPST
IHM-1 FX10
Jacques BAPST
Jacques BAPST
IHM-1 FX10
Jacques BAPST
IHM-1 FX10
Jacques BAPST
IHM-1 FX10
Jacques BAPST
IHM-1 FX10
Jacques BAPST
IHM-1 FX10
Jacques BAPST
10
btnSmall
btnMedium
btnBig
btnCancel
=
=
=
=
new
new
new
new
ButtonType("Small");
ButtonType("Medium");
ButtonType("Big");
ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
IHM-1 FX10
Jacques BAPST
11
IHM-1 FX10
Jacques BAPST
12
IHM-1 FX10
Jacques BAPST
13
IHM-1 FX10
Jacques BAPST
14
IHM-1 FX10
Jacques BAPST
15
Expandable
Content
IHM-1 FX10
Jacques BAPST
16
IHM-1 FX10
Jacques BAPST
17
Icne
IHM-1 FX10
Jacques BAPST
18
IHM-1 FX10
Jacques BAPST
19
FileChooser [1]
L'utilitaire FileChooser permet d'ouvrir une bote de dialogue
permettant l'utilisateur de naviguer dans l'arborescence des
fichiers de la machine cible et de slectionner un ou plusieurs
fichiers (pour slectionner un rpertoire, il faut utiliser DirectoryChooser).
Il s'agit d'une bote de dialogue spcifique au systme d'exploitation
de la machine cible. Le look & feel est indpendant de JavaFX (il
correspond en principe au look & feel natif).
Jacques BAPST
20
FileChooser [2]
Exemple d'utilisation de FileChooser avec :
Dfinition d'un titre pour la fentre popup
Dfinition d'un rpertoire initial (point de dpart de la navigation)
bas sur des proprits du systme
Dfinition de filtres bass sur les extensions des fichiers
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("FileChooser Example");
File homeDir = new File(System.getProperty("user.home"));
fileChooser.setInitialDirectory(homeDir);
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("Text Files" , "*.txt"),
new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"),
new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"),
new ExtensionFilter("All Files" , "*.*"));
IHM-1 FX10
Jacques BAPST
21
FileChooser [3]
La fentre popup s'ouvre lors de l'invocation de la mthode show()
qui retourne le fichier slectionn ou une rfrence null si
l'utilisateur a press sur Cancel ou a ferm la fentre.
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
try {
//--- Open the file with associated application
Desktop.getDesktop().open(selectedFile);
}
catch (Exception e) {
System.err.println("ERROR: Unable to open the file");
}
}
Tente d'ouvrir le fichier
avec l'application associe
IHM-1 FX10
Jacques BAPST
22
FileChooser [4]
Affichage (sous Windows) :
IHM-1 FX10
Jacques BAPST
23
FileChooser [5]
Pour permettre une slection multiple, il faut utiliser la mthode
showOpenMultipleDialog() qui retourne une liste de fichiers ou
une rfrence null si l'utilisateur a press sur Cancel ou a ferm la
fentre.
List<File> selectedFiles = fileChooser.showOpenMultipleDialog(stage);
if (selectedFiles != null) {
for (File f : selectedFiles) {
System.out.println(f);
}
Codage classique
Avec expression lambda
IHM-1 FX10
Jacques BAPST
24
DirectoryChooser [1]
L'utilitaire DirectoryChooser permet d'ouvrir une bote de dialogue
permettant l'utilisateur de naviguer dans l'arborescence des
fichiers de la machine cible et de slectionner un rpertoire.
IHM-1 FX10
Jacques BAPST
25
DirectoryChooser [2]
Exemple :
DirectoryChooser dirChooser = new DirectoryChooser();
dirChooser.setTitle("DirectoryChooser Example");
dirChooser.setInitialDirectory(new File("D://Temp"));
IHM-1 FX10
Jacques BAPST
26
DirectoryChooser [3]
Affichage (sous Windows) :
IHM-1 FX10
Jacques BAPST
27
DatePicker [1]
La classe DatePicker reprsente un composant qui permet
l'utilisateur de slectionner une date dans un calendrier qui est
affich en fentre popup.
IHM-1 FX10
Jacques BAPST
28
DatePicker [2]
Exemple d'utilisation du composant :
. . .
DatePicker dPicker = new DatePicker();
Ajout du composant
dans le graphe de scne
root.getChildren().add(dPicker);
dPicker.setOnAction(e -> {
LocalDate date = dPicker.getValue();
System.out.println("Selected date: " + date);
. . .
int day
= date.getDayOfMonth();
// 1..31
int month = date.getMonthValue();
// 1..12
int year = date.getYear();
. . .
});
. . .
IHM-1 FX10
Jacques BAPST
29
ColorPicker [1]
La classe ColorPicker reprsente un composant qui permet
l'utilisateur de slectionner une couleur dans une palette ou selon
diffrents espaces de couleur (HSB, RBG, Web, ).
IHM-1 FX10
Jacques BAPST
30
ColorPicker [2]
IHM-1 FX10
Jacques BAPST
31
ColorPicker [3]
Exemple d'utilisation du composant :
. . .
ColorPicker cPicker = new ColorPicker(Color.BLUE);
Ajout du composant
dans le graphe de scne
root.getChildren().add(cPicker);
cPicker.setOnAction(e -> {
Color c = cPicker.getValue();
. . .
//--- Display hexadecimal values (#rrggbbaa)
System.out.println("Selected color: " + c);
// Display decimal values RGB (0.0...1.0)
System.out.println("Selected color = " + c.getRed()
+ ", "
+ c.getGreen() + ", "
+ c.getBlue()
);
. . .
});
. . .
IHM-1 FX10
Jacques BAPST
32