使用java应用程序时,每次打开对话框时,起始目录始终是我的主目录。有没有办法让它记住上次使用的目录?或者,是否有“改进的”java文件选择对话框,允许进行类型到搜索或大多数其他应用程序文件选择对话框中标准的任何功能?
编辑:我认为发布的答案解决了编写 java应用程序的问题,但不适用于用户。也许用户不可能更改文件浏览器界面,但我想知道这一点。如果它很重要,我会考虑一些具体的例子(亚马逊AWS上传器),但我观察到大多数使用文件浏览器的java应用程序中的行为。
答案 0 :(得分:31)
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());
}
答案 1 :(得分:15)
将文件选择器存储为类属性。重新打开时,将保留以下内容。
有没有办法让它记住上次使用的目录?
当然,如果你的意思是在运行之间保持状态,有许多存储细节的替代形式,以及存储它们的地方/方式。
有关使用JFrame
文件存储Properties
边界的示例,请参阅this answer。
也许用户无法更改文件浏览器界面,..
'用户'是什么?您是指在应用中使用一个的开发人员吗?
也许您需要的是实现自己的文件选择器。如果是这种情况,您可以从FileBro代码开始。
答案 2 :(得分:8)
Swing JFileChooser
有一个设置初始目录的方法。 setCurrentDirectory(File dir)
选择文件后,您可以通过调用getCurrentDirectory获取所选目录并将其存储在应用程序的某个配置文件中。
答案 3 :(得分:2)
您可以在应用程序中缓存最后一个目录位置,并在打开文件选择器时按setCurrentDirectory
指定默认位置
答案 4 :(得分:0)
这里我使用带有目录对话框的简单代码打开最后一个使用目录
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;
}