JFileChooser按选择的顺序选择多个文件

时间:2013-11-18 03:30:41

标签: java swing jfilechooser

我希望JFileChoser选择多个文件,并按照选择的顺序获取所选文件的列表。 有可能吗?

1 个答案:

答案 0 :(得分:2)

从技术上讲,这可以使用java.beans.PropertyChangeListener

final JFileChooser diag = new JFileChooser();
diag.setMultiSelectionEnabled(true);

final List<File> chosen = new ArrayList<File>();

diag.addPropertyChangeListener(
                    JFileChooser.SELECTED_FILES_CHANGED_PROPERTY,
                    new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent e) {

        List<File> selected = Arrays.asList(diag.getSelectedFiles());
        Iterator<File> it = chosen.iterator();

        while (it.hasNext())
            if (!selected.contains(it.next()))
                it.remove();

        for (File file : selected)
            if (!chosen.contains(file))
                chosen.add(file);
    }
});

if (diag.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
    // 'chosen' holds selected files in order of selection

不优雅,我不知道这是多么稳定。