Existen algunos cuadros de diálogo especiales que representan información muy concreta dentro de la aplicación. Estos son los de selección de archivo, selección de color y selección de fecha. Ninguno de los tres se construyen con un objeto de tipo Alert o Dialog como se vio en otra entrada sino que tienen su propio objeto.

Selección de archivo

El diálogo de selección de archivo permite al usuario seleccionar un archivo bien para abrirlo y trabajar con él o bien para guardarlo. El objeto utilizado para poder crearlo es FileChooser al cual se le pasa un objeto de tipo stage que representa la ventana de la cual dependerá

FileChooser dialogoFichero = new FileChooser();
dialogoFichero.setTitle("Selecciona un fichero");
//File fAbrir = dialogoFichero.showOpenDialog(null);
//labelFichero.setText(f.getAbsolutePath());
File fGuardar = dialogoFichero.showSaveDialog(null);

if (fGuardar != null) {
    try {
        FileWriter fileWriter = null;
        fileWriter = new FileWriter(fGuardar);
        fileWriter.close();
    } catch (IOException ex) {
        System.out.println("Excepción capturada");
    }
}

Existen dos grandes formas de abrir el diálogo:

  • showOpenDialog(stage): utilizado para abrir un fichero. Este método devuelve un objeto de tipo file que será utilizado para los fines requeridos
  • showSaveDialog(stage): utilizado para seleccionar un fichero o indicar un nombre nuevo donde se guardará lo seleccionado

Selección de color

La selección de color no se trata de un diálogo al uso ya que tiene un aspecto de chooser o spinner, donde se despliega la lista de colores a seleccionar. Para ello se trabaja con un objeto de tipo ColorPicker al cual hay que dar un setOnAction para que realice las acciones deseadas

ColorPicker dialogoColor = new ColorPicker();
dialogoColor.setOnAction(this);
dialogoColor.setValue(Color.YELLOWGREEN);
dialogoColor.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
               System.out.println(dialogoColor.getValue().toString());    
            }
});

Selección de fecha

Al igual que el anterior no se trata de un cuadro de diálogo como tal, sino un selector de fecha donde se muestra un calendario. El objeto que permite esto es un DatePicker. Al igual que en el caso anterior se debe aplicar un setOnAction al objeto para poder mostrarlo. El tipo de dato que devuelve el date piker es un LocalDate

DatePicker dialogoFecha = new DatePicker();
dialogoFecha.setValue(LocalDate.now());
dialogoFecha.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
               System.out.println(dialogoFecha.getValue().toString()); 
            }
});