JFile选择目录但显示文件

2022-09-02 19:34:52

我觉得应该有一个简单的方法来做到这一点,但我无法弄清楚。我有一个JFileChooser,允许用户选择目录。我想显示目录中的所有文件,以便为用户提供一些上下文,但只有目录应该被接受为选择(也许在选择文件时,“打开”按钮将被禁用)。有没有一种简单的方法来做到这一点?


答案 1

我的解决方案是将camickr和trashgod的答案合并:

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

答案 2

请参阅如何使用文件选择器中的 setFileSelectionMode():

setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY)

附录:通过取消注释此 FileChooserDemo 的第 73 行可以看到效果,但它似乎与平台相关。

附录:如果使用 ,请考虑相应地更改按钮文本:FILES_AND_DIRECTORIES

chooser.setApproveButtonText("Choose directory");

由于效果取决于L&F,请考虑在已经满足您的UI要求的平台上使用:DIRECTORIES_ONLY

if (System.getProperty("os.name").startsWith("Mac OS X")) {
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
} else {
    chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
}

推荐