Le JFileChooser
semble manquer: une façon de suggérer le nom du fichier lors de l'enregistrement d'un fichier (ce qui est généralement sélectionné pour qu'il soit 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 n'a pas besoin d'exister.
EDIT: Si vous passez 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", String.class);
setFileName.invoke(fcUi, defaultDir.getName());
} catch (Exception e) {
e.printStackTrace();
}
Malheureusement, setFileName n'est pas inclus dans l'interface UI, d'où la nécessité de l'appeler dynamiquement. Testé uniquement sur mac.
Si cela ne fonctionne pas, voici une solution:
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()
supprimera le nom du fichier.