有没有办法让java文件选择对话框记住最后一个目录?

kef*_*ich 18 java swing

使用java应用程序时,每次打开对话框时,起始目录始终是我的主目录.有没有办法让它记住上次使用的目录?或者,是否有"改进的"java文件选择对话框,允许类型到搜索或大多数其他应用程序文件选择对话框中标准的任何功能?

编辑:我认为发布的答案解决了编写 Java应用程序的问题,但不适用于用户.也许用户不可能更改文件浏览器界面,但我想知道这一点.如果它很重要,我会考虑一些具体的例子(亚马逊AWS上传器),但我观察到大多数使用文件浏览器的java应用程序中的行为.

Arc*_*ano 35

JFileChooser不记得了.但是,Java提供了Preferences 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());
}
Run Code Online (Sandbox Code Playgroud)

  • LAST_USED_FOLDER 是在哪里定义的? (2认同)
  • 这是一个常数.只需定义一个. (2认同)

And*_*son 16

将文件选择器存储为类属性.重新打开时,将保留以下内容.

  1. 目录.
  2. 目录中用户滚动位置的位置.
  3. 选定的文件过滤器.
  4. 尺寸.
  5. 屏幕上的位置.
  6. PLAF.
  7. ..

有没有办法让它记住上次使用的目录?

当然,如果您的意思是在运行之间保持状态,则存在许多存储细节的替代形式,以及存储它们的位置/方式.有关 使用文件存储边界的示例,请参阅此答案.JFrameProperties


也许用户无法更改文件浏览器界面,..

'用户'是什么?您是指在应用程序中使用一个的开发人员吗?

也许您需要的是实现自己的文件选择器.如果是这种情况,您可以从FileBro代码开始.


Woj*_*zyk 8

Swing JFileChooser有一个设置初始目录的方法.setCurrentDirectory(File dir) 选择文件后,您可以通过调用getCurrentDirectory获取所选目录,并将其存储在应用程序的某个配置文件中.