JFileChooser 可以 select 除当前文件夹之外的任何文件夹吗?

JFileChooser can select any folder apart from the current one?

我正在使用 JFileChooser 来允许用户select 一个文件夹。他们必须能够查看每个文件夹中的文件以了解上下文。问题是弹出对话框时我无法 select 我所在的文件夹。 (即我点击 "open" 没有任何反应)。但是,如果我切换到另一个目录然后再​​回到第一个目录,那么我可以 select 它。

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,您必须在对话框中选择一个文件或文件夹,然后才允许您单击 open/save。

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("."));

为了方便用户,设置为与CurrentDirectory一样,让用户在点击按钮时看到会选择哪个目录