5

在我的应用程序中,我希望用户能够选择一个目录来存储内容。我有一个文本字段用于显示他们选择的目录。如果他们只是点击一个目录(不要浏览它),一切都很好。但是,如果他们双击目录并查看其中,目录名称是重复的。

前任。它们在主目录中,单击文件夹 Desktop...返回的路径是 ~/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

4

2 回答 2

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 上的 6u13。你的设置或你在做什么有什么奇怪的吗?

如果在 Java 的 Mac OS X 实现中存在特定错误,您可能想要检查文件是否存在,如果不存在,则将最后一个重复数据删除到路径的元素中。

于 2009-07-15T22:28:36.647 回答
1

当您使用选择器.showDialog 或选择器.showSaveDialog 而不是选择器.showOpenDialog 时会出现此问题。在 XP 上,chooser.showDialog 在 OP 给出的示例下返回正确的路径,但在 Mac OS 10.5.7(可能还有更早的版本)上,你会得到 ~/Desktop/Desktop 。(在我的情况下,我需要使用 showSaveDialog 因为我希望用户可以选择创建一个新文件夹,所以看起来我必须手动对路径进行重复数据删除。看起来这确实是 Apple 中的一个错误Java 实现。)

于 2009-08-07T17:25:48.553 回答