JFileChooser.showSaveDialog (…) – comment définir le nom de fichier suggéré

Le JFileChooser semble manquer: une manière de suggérer le nom du fichier lors de l’enregistrement d’un fichier (ce qui est généralement sélectionné pour être remplacé lorsque l’utilisateur commence à taper).

Y a-t-il un moyen de contourner ceci?

Si je vous comprends bien, vous devez utiliser la méthode setSelectedFile .

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

Le fichier ne doit pas nécessairement exister.

EDIT: Si vous transmettez un fichier avec un chemin absolu, JFileChooser essaiera de se positionner dans ce répertoire (s’il existe).

setSelectedFile ne fonctionne pas avec les répertoires comme mentionné ci-dessus, une solution est

  try { FileChooserUI fcUi = fileChooser.getUI(); fcUi.setSelectedFile(defaultDir); Class< ? extends FileChooserUI> fcClass = fcUi.getClass(); Method setFileName = fcClass.getMethod("setFileName", Ssortingng.class); setFileName.invoke(fcUi, defaultDir.getName()); } catch (Exception e) { e.printStackTrace(); } 

Malheureusement, setFileName n’est pas inclus dans l’interface utilisateur, d’où la nécessité de l’appeler dynamicment. Seulement testé sur mac.

Si cela ne fonctionne pas, voici une solution de contournement:

 dialog.getUI().setFileName( name ) 

Mais vous devez vérifier si le mode de sélection est FILES_ONLY ou FILES_AND_DIRECTORIES . Si c’est DIRECTORIES_ONLY , alors setSelectedFile() le nom du fichier.

Génial! Fonctionne parfaitement sous Windows avec Java 1.6.35. Seul petit changement dans mon cas:

 FileChooserUI fcUi = jFileChooser.getUI(); Class< ? extends FileChooserUI> fcClass = fcUi.getClass(); Method setFileName = fcClass.getMethod("setFileName", Ssortingng.class); setFileName.invoke(fcUi, defaultDirectoryName);