JFileChooser.showSaveDialog (...) - как установить предлагаемое имя файла - PullRequest
50 голосов
/ 10 декабря 2008

Кажется, что в JFileChooser отсутствует признак: способ предложить имя файла при сохранении файла (вещь, которая обычно выбирается так, чтобы она заменялась, когда пользователь начинает печатать).

Есть ли способ обойти это?

Ответы [ 3 ]

95 голосов
/ 10 декабря 2008

Если я вас правильно понимаю, вам нужно использовать метод setSelectedFile.

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

Файл не должен существовать.

РЕДАКТИРОВАТЬ: Если вы передаете файл с абсолютным путем, JFileChooser попытается позиционировать себя в этом каталоге (если он существует).

4 голосов
/ 03 февраля 2012

setSelectedFile не работает с каталогами, как упомянуто выше, решение -

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

К сожалению, setFileName не входит в интерфейс UI, поэтому необходимо вызывать его динамически. Проверено только на Mac.

1 голос
/ 11 июля 2011

Если это не сработает, вот обходной путь:

dialog.getUI().setFileName( name )

Но вы должны проверить, является ли режим выбора FILES_ONLY или FILES_AND_DIRECTORIES. Если это DIRECTORIES_ONLY, то setSelectedFile() удалит имя файла.

...