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




Если я вас правильно понял, нужно использовать метод setSelectedFile.
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
Файл не должен существовать.
Обновлено: Если вы передадите файл с абсолютным путем, JFileChooser попытается позиционировать себя в этом каталоге (если он существует).
Если это не сработает, есть обходной путь:
dialog.getUI().setFileName( name )
Но вы должны проверить, какой режим выбора - FILES_ONLY или FILES_AND_DIRECTORIES. Если это DIRECTORIES_ONLY, то setSelectedFile() удалит имя файла.
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 не включен в интерфейс пользовательского интерфейса, поэтому необходимо вызывать его динамически. Проверено только на Mac.
Работайте у меня на Mac 10.3.4 / Java 1.4.2
Но как бы вы получили доступ к диалогу? Он частный, создается на месте в
showSaveDialog()и удаляется сразу после того, как он был показан, все еще внутри этой функции.