2008-12-10 20 views

Respuesta

88

Si lo entiendo correctamente, debe utilizar el método setSelectedFile.

JFileChooser jFileChooser = new JFileChooser(); 
jFileChooser.setSelectedFile(new File("fileToSave.txt")); 
jFileChooser.showSaveDialog(parent); 

No es necesario que exista el archivo.

EDIT: Si pasa un archivo con una ruta absoluta, JFileChooser intentará posicionarse en ese directorio (si existe).

1

Si eso no funciona, aquí es una solución:

dialog.getUI().setFileName(name) 

Pero usted debe comprobar si el modo de selección es FILES_ONLY o FILES_AND_DIRECTORIES. Si es DIRECTORIES_ONLY, entonces setSelectedFile() borrará el nombre del archivo.

+0

¿Cómo accedería al diálogo? Es privado, creado en el momento en 'showSaveDialog()', y eliminado inmediatamente después de que se mostró, aún dentro de esa función. – Nyerguds

+0

Copiaría el método. –

4

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(); 
    } 

Por desgracia, la setFileName no está incluido en la interfaz de la interfaz de usuario, por lo tanto la necesidad de llamar de forma dinámica. Solo probado en mac.

+0

Trabaja para mí en Mac 10.3.4/Java 1.4.2 –

-3

¡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); 
+0

Explica cuáles son tus cambios y por qué los has creado. – PhoneixS

Cuestiones relacionadas