JFileChooser 中的多类型选择

Mulitype selection in JFileChooser

我的代码:

JFileChooser dialog = new JFileChooser();
dialog.showOpenDialog(rootPane);
dialog.setMultiSelectionEnabled(true);
dialog.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean accept(File arg0) {
        return arg0.getAbsolutePath().endsWith("png")||
                arg0.getAbsolutePath().endsWith("jpg");
    }
});
File[] file = dialog.getSelectedFiles();

当程序是运行时,我不能select超过1个文件。

您必须在打开对话框之前设置多选启用。

dialog.setMultiSelectionEnabled(true);  
dialog.showOpenDialog(rootPane);

与设置文件过滤器相同。

JFileChooser dialog = new JFileChooser();
dialog.setMultiSelectionEnabled(true);
dialog.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean accept(File arg0) {
        return arg0.getAbsolutePath().endsWith("png")
                || arg0.getAbsolutePath().endsWith("jpg");
    }

});
dialog.showOpenDialog(rootPane);//open it last
File[] file = dialog.getSelectedFiles();

您需要将 dialog.setMultiSelectionEnabled(true); 移至 dialog.showOpenDialog(rootPane); 上方才能完成这项工作。此外,如果您不需要描述,您可以简化代码,如下所示。希望这有帮助。

`JFileChooser dialog = new JFileChooser();
 dialog.setMultiSelectionEnabled(true);
 dialog.showOpenDialog(null);
 dialog.addChoosableFileFilter(new FileNameExtensionFilter("pngFilter", "png"));
 dialog.addChoosableFileFilter(new FileNameExtensionFilter("jpgFilter", "jpg"));
 File[] file = dialog.getSelectedFiles();`