seleccionar ruta obtener mkyong examples example carpeta java swing jfilechooser

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.