web-dev-qa-db-fra.com

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

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?

51
yanchenko

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

96
bruno conde

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.

4
Erik Martino

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.

1
Aaron Digulla