Есть ли способ заставить диалоги выбора файла Java запомнить последний каталог? - PullRequest
17 голосов
/ 27 ноября 2011

При использовании Java-приложений каждый раз, когда я открываю диалоговое окно, начальный каталог всегда является моим домашним каталогом. Есть ли способ заставить его вспомнить последний использованный каталог? Альтернативно, существуют ли «улучшенные» диалоговые окна выбора файлов Java, которые позволяют выполнять поиск по типу, или какие-либо функции, которые являются стандартными в большинстве других диалоговых окон выбора файлов приложения?

РЕДАКТИРОВАТЬ: Я думаю, что опубликованные ответы касаются вопроса для написания Java-приложений, но не для пользователя. Возможно, пользователь не сможет изменить интерфейс файлового браузера, но я бы хотел это знать. В случае, если это имеет значение, я имею в виду несколько конкретных примеров (загрузчик Amazon AWS), но я наблюдал такое поведение в большинстве Java-приложений, использующих файловый браузер.

Ответы [ 5 ]

31 голосов
/ 25 марта 2014

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());
}
16 голосов
/ 27 ноября 2011

Сохраните средство выбора файлов как атрибут класса.При повторном открытии будет сохранено следующее:

  1. Каталог.
  2. Место в каталоге, куда пользователь прокрутил.
  3. TheФильтр выбранного файла.
  4. Размер.
  5. Расположение на экране.
  6. PLAF.
  7. ..

Есть ли способ заставить его запомнить последний использованный каталог?

Конечно, если вы имеете в виду сохранение состояния между запусками, существует ряд альтернативных форм хранения деталей и мест / способов их хранения.См. этот ответ для примера сохранения границ JFrame с использованием файла Properties.


Возможно, пользователь не сможет изменитьинтерфейс браузера файлов, ..

Что такое «пользователь»?Вы имеете в виду разработчика, который использует его в приложении ??

Может быть, вам нужно реализовать собственный инструмент выбора файлов.В этом случае вы можете начать с FileBro кода.

image

8 голосов
/ 27 ноября 2011

Swing JFileChooser имеет метод для установки начального каталога. setCurrentDirectory (File dir) После того, как файл был выбран, вы можете получить выбранный каталог, вызвав getCurrentDirectory и сохранить его в некотором конфигурационном файле вашего приложения.

2 голосов
/ 27 ноября 2011

Вы можете кэшировать последнюю папку dir в приложении и при открытии средства выбора файлов указать местоположение по умолчанию setCurrentDirectory

0 голосов
/ 17 июля 2017

Здесь я использовал простой код с диалоговым окном каталога, чтобы открыть каталог последнего использования

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; 
      } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...