java - ruta - JFileChooser.showSaveDialog(...): cómo configurar el nombre de archivo sugerido
jfilechooser java seleccionar carpeta (5)
¡Estupendo! Funciona perfectamente en Windows también con Java 1.6.35. Solo un pequeño cambio en mi caso:
FileChooserUI fcUi = jFileChooser.getUI();
Class<? extends FileChooserUI> fcClass = fcUi.getClass();
Method setFileName = fcClass.getMethod("setFileName", String.class);
setFileName.invoke(fcUi, defaultDirectoryName);
Al abotagado JFileChooser
parece faltarle una característica: una forma de sugerir el nombre del archivo al guardar un archivo (lo que generalmente se selecciona para que pueda ser reemplazado cuando el usuario comienza a escribir).
¿Hay alguna forma de evitar esto?
Si eso no funciona, aquí hay una solución alternativa:
dialog.getUI().setFileName( name )
Pero debe verificar si el modo de selección es FILES_ONLY
o FILES_AND_DIRECTORIES
. Si es DIRECTORIES_ONLY
, entonces setSelectedFile()
el nombre del archivo.
Si te entiendo correctamente, debes usar el método setSelectedFile
.
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
El archivo no necesita existir.
EDITAR: Si pasa un archivo con una ruta absoluta, JFileChooser
intentará posicionarse en ese directorio (si existe).
es sencillo
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setInitialFileName("myFileName.ext");
setSelectedFile no funciona con directorios como se mencionó anteriormente, una solución es
try {
FileChooserUI fcUi = fileChooser.getUI();
fcUi.setSelectedFile(defaultDir);
Class<? extends FileChooserUI> fcClass = fcUi.getClass();
Method setFileName = fcClass.getMethod("setFileName", String.class);
setFileName.invoke(fcUi, defaultDir.getName());
} catch (Exception e) {
e.printStackTrace();
}
Lamentablemente, el setFileName no está incluido en la interfaz de la interfaz de usuario, por lo que es necesario llamarlo dinámicamente. Solo probado en mac.