Есть ли способ, чтобы диалоги выбора файла java помнили последний каталог?
При использовании java-приложений каждый раз, когда я открываю диалоговое окно, стартовый каталог всегда является моим домашним каталогом. Есть ли способ заставить его вспомнить последний использованный каталог? Альтернативно, есть ли улучшенные диалоги выбора файлов java, которые позволяют использовать тип для поиска или любую из функций, которые являются стандартными в большинстве других диалогов выбора файлов приложений?
ИЗМЕНИТЬ: Я думаю, что в ответах на вопрос задан вопрос о написании java-приложений, но не для пользователя. Возможно, пользователь не может изменить интерфейс браузера файлов, но я хотел бы это знать. В случае, если это имеет значение, у меня есть несколько конкретных примеров (Amazon AWS uploader), но я наблюдал это поведение в большинстве приложений Java, использующих браузер файлов.
Ответы
Ответ 1
Сохраните файл выбора в качестве атрибута класса. Когда он будет снова открыт, будет сохранено следующее.
- Каталог.
- Место в каталоге, в котором прокручивался пользователь.
- Выбранный фильтр файлов.
- Размер.
- Местоположение на экране.
- PLAF.
- ..
Есть ли способ заставить его запомнить последний использованный каталог?
Конечно, если вы имеете в виду постоянство состояния между прогонами, существует множество альтернативных форм хранения деталей и мест/способов их хранения.
См. этот ответ для примера сохранения границ JFrame
с помощью файла Properties
.
Возможно, пользователю не удастся изменить интерфейс браузера файлов.
Какой пользователь? Вы имеете в виду разработчика, который использует его в приложении?
Возможно, вам нужно реализовать свой собственный выбор файла. Если это так, вы можете начать с кода FileBro.
![yswnE.png]()
Ответ 2
JFileChooser этого не помнит. Однако Java предоставляет API-интерфейс настроек
Preferences prefs = Preferences.userRoot().node(getClass().getName());
JFileChooser chooser = new JFileChooser(prefs.get(LAST_USED_FOLDER,
new File(".").getAbsolutePath()));
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
// do something
prefs.put(LAST_USED_FOLDER, chooser.getSelectedFile().getParent());
}
Ответ 3
Swing JFileChooser
имеет метод установки исходного каталога. setCurrentDirectory (File dir)
После выбора файла вы можете получить выбранный каталог, вызвав getCurrentDirectory и сохраните его в каком-либо файле конфигурации вашего приложения.
Ответ 4
Вы можете кэшировать последнее местоположение dir в приложении и при открытии выбора файла укажите местоположение по умолчанию setCurrentDirectory
Ответ 5
Здесь я использовал простой код с диалоговым окном каталога для открытия с помощью последнего каталога использования
IDialogSettings dialogSettings = Activator.getDefault().getDialogSettings();
String lastUsedPath = dialogSettings.get(IAntUIConstants.DIALOGSTORE_LASTANTHOME);
if (lastUsedPath == null) {
lastUsedPath = "c:\\";
}
DirectoryDialog dialog = new DirectoryDialog(Display.getDefault().getActiveShell());
dialog.setFilterPath(lastUsedPath);
String location = dialog.open();
if (location == null) {
return;
}
dialogSettings.put(IAntUIConstants.DIALOGSTORE_LASTANTHOME, location);
AntCorePreferences preferences = AntCorePlugin.getPlugin().getPreferences();
String defaultHome = preferences.getAntHome();
if (location.equalsIgnoreCase(defaultHome)) {
location = null;
}