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