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

时间:2018-01-18 07:06:40

标签: java jfilechooser

我正在使用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;
}

2 个答案:

答案 0 :(得分:2)

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相同,以便用户在单击按钮时看到将选择哪个目录

答案 1 :(得分:0)

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