如何将 JFileChooser 限制为 select 个特定数量的文件?

How to constrain JFileChooser to select particular number files?

使用 JFileChooser,我已通过 setMultiSelectionEnabled(true) 启用多 selection 模式,但我如何设置限制以便用户只能 select a特定数量的文本(或其他)文件?

public File[] fileSelect() {
    fileChooser = new JFileChooser();
    fileNameExtFilter = new FileNameExtensionFilter("Text File","txt");
    fileChooser.setCurrentDirectory(new java.io.File("."));
    fileChooser.setDialogTitle("Open Question Set");
    fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    fileChooser.setAcceptAllFileFilterUsed(false);
    fileChooser.setFileFilter(fileNameExtFilter);
    fileChooser.setMultiSelectionEnabled(true);

    if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
        return fileChooser.getSelectedFiles();
    else
        return null;
}

有几种可能的方法:

  • 通过子classing BasicFileChooserUI 创建自定义 FileChooserUI 并在嵌套 class [=12= 的实现中限制选择].

  • 创建自定义文件浏览器,如图here,并在相关监听器中限制选择

  • 使用现有的FileChooser并在选择超过三个时显示对话框;考虑使用 JTable 包含复选框,如图 here.

  • 使用单独的选择器面板,如图所示 here 通过 createPathPanel() 为两个文件。

最佳选择和具体细节将取决于用例。