在我的应用程序中,我希望用户能够选择一个目录来存储内容。我有一个文本字段,我用它来显示他们选择的目录。如果他们只是点击一个目录(不要浏览它),一切都很好。但是,如果他们双击目录并查看其中,则目录名称是重复的。
实施例。他们在主目录中,单击文件夹桌面...返回的路径是〜/ Desktop。另一方面,如果它们在主目录中,双击文件夹Desktop,现在在Desktop文件夹中,返回的路径是〜/ Desktop / Destkop。
这就是我正在做的事情:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
loadField.setText(f.getPath());
}
我也试过像chooser.getCurrentDirectory()
这样的事情,但这也不起作用。
编辑:使用Mac OS X,Java 1.6
答案 0 :(得分:3)
似乎适合我。
import javax.swing.JFileChooser;
public class FChoose {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
java.io.File f = chooser.getSelectedFile();
System.err.println(f.getPath());
}
}});
}
}
Vista上的6月13日。你的设置或你在做什么有什么奇怪的吗?
如果在Java OS的Mac OS X实现中存在特定错误,您可能想要检查该文件是否存在,如果不是,则最后重复删除该路径的元素。
答案 1 :(得分:1)
使用chooser.showDialog或chooser.showSaveDialog而不是chooser.showOpenDialog时会出现问题。在XP上,chooser.showDialog在OP给出的示例下返回正确的路径,但在Mac OS 10.5.7(以及可能的早期版本)上你会得到〜/ Desktop / Desktop。 (在我的情况下,我需要使用showSaveDialog,因为我希望用户可以选择创建一个新文件夹,所以看起来我必须手动重新删除路径。看起来这似乎是Apple中的一个错误Java实现。)