JFileChooser.showSaveDialog (…) - как установить предлагаемое имя файла

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

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

10.12.2008 16:30:47
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

99
10.12.2008 16:38:58

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

dialog.getUI().setFileName( name )

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

1
11.07.2011 15:18:24
Как бы вы получили доступ к диалогу? Это частное приложение, созданное на месте showSaveDialog()и расположенное сразу после его показа, все еще внутри этой функции.
Nyerguds 12.08.2011 08:26:40
Я бы скопировал метод.
Aaron Digulla 12.08.2011 10:33:58

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.

4
2.02.2012 20:23:30
Работа для меня в Mac 10.3.4 / Java 1.4.2
Daniel De León 15.06.2012 17:32:31