JFileChooser选择目录或单个文件

时间:2014-09-04 13:21:50

标签: java swing jfilechooser

是否可以制作一个可以选择文件或目录的JFileChooser? 因为,如果我在选择器中使用filefilter,则只能选择包含filter选项的文件,但我无法再选择目录。

这是我的JFileChooser

JFileChooser ch = new JFileChooser();
  ch.setAcceptAllFileFilterUsed(false);
  ch.setFileFilter(new FileFilter() {

    public boolean accept(File f) {
      if (f != null && f.isDirectory()) {
        return true;
      }
      if (f == null || !f.getName().toUpperCase().endsWith(".PROPERTIES")) {
        return false;
      }
      return true;
    }

    public String getDescription() {
      return "Property Files" + " (*.properties)";
    }
  });
  ch.setCurrentDirectory(new File("."));
  ch.showOpenDialog(this);
  if (ch.getSelectedFile() != null) {
    ressource = ch.getSelectedFile();
  }
  else {
    return;
  }
  txtRessource.setText(ressource.getAbsolutePath());

2 个答案:

答案 0 :(得分:3)

致电

ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

通过这种方式,您可以选择文件或目录。这适用于您的过滤器的组合。

顺便说一下,你也不必实现文件过滤器,有一个FileNameExtensionFilter可以完全满足您的要求(它也接受文件夹):

ch.setFileFilter(new FileNameExtensionFilter("Properties file", "properties"));

答案 1 :(得分:1)

要选择文件和目录,请尝试此

file_chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

并且只选择目录试试这个

dir_chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

<强>原因
顾名思义,添加文件过滤器只会过滤掉一种ceratin类型的文件,并且如果你只想选择图像文件,它将允许你只选择特定类型的文件,如.jpg,.png等。但是要选择目录或仅选择文件,您必须设置JFileChooser实例的文件选择模式。根据您的要求设置模式。