Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFileChooser可以选择除当前文件夹之外的任何文件夹?_Java_Jfilechooser - Fatal编程技术网

Java JFileChooser可以选择除当前文件夹之外的任何文件夹?

Java JFileChooser可以选择除当前文件夹之外的任何文件夹?,java,jfilechooser,Java,Jfilechooser,我使用JFileChooser允许用户选择文件夹。他们必须能够查看每个文件夹中的文件的上下文。问题是当对话框弹出时,我无法选择我所在的文件夹。(即,我单击“打开”,但什么也没有发生)。但是,如果我切换到另一个目录,然后返回到第一个目录,那么我可以选择它 public static String selectFolder() { final JFileChooser chooser = new JFileChooser() { public void approve

我使用JFileChooser允许用户选择文件夹。他们必须能够查看每个文件夹中的文件的上下文。问题是当对话框弹出时,我无法选择我所在的文件夹。(即,我单击“打开”,但什么也没有发生)。但是,如果我切换到另一个目录,然后返回到第一个目录,那么我可以选择它

public static String selectFolder()
{
    final JFileChooser chooser = new JFileChooser() {
            public void approveSelection() {
                if (getSelectedFile().isFile()) {
                    return;
                } else
                    super.approveSelection();
            }
    };

    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle("Select Folder");
    chooser.setFileSelectionMode( JFileChooser.FILES_AND_DIRECTORIES );

    chooser.setAcceptAllFileFilterUsed(false);

    chooser.showOpenDialog(null);

    File x = chooser.getSelectedFile();

    if( x != null )
        return x.toString();

    return null;
}

根据JFileChooser,您必须在对话框上选择一个文件或文件夹,然后只有它允许您单击“打开/保存”

public static String selectFolder() {
    final JFileChooser chooser = new JFileChooser() {
        public void approveSelection() {
            if (getSelectedFile().isFile()) {
                return;
            } else
                super.approveSelection();
        }
    };

    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle("Select Folder");
    chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

    chooser.setAcceptAllFileFilterUsed(true);

    chooser.setSelectedFile(new java.io.File("."));
    chooser.showOpenDialog(null);
    File x = chooser.getSelectedFile();

    if (x != null)
        return x.toString();

    return null;
}
您只需添加以下行:

chooser.setSelectedFile(new java.io.File("."));

为了便于用户使用,请将其设置为与当前目录相同,以便用户在单击按钮时看到将选择哪个目录

这不是一个真正的解决方案,但在我看来,从某个驱动器而不是文件夹开始更方便用户。我们这里不使用[已解决的]标题破解-使用接受系统本身就可以了,就像您已经做的那样。谢谢那么,如何选择对话框首次打开时指向的目录呢?切换到另一个目录,然后切换回第一个目录?就是这样。谢谢