Java JFileChoser按选择顺序选择多个文件

Java JFileChoser按选择顺序选择多个文件,java,swing,jfilechooser,Java,Swing,Jfilechooser,我希望JFileChoser选择多个文件,并按照选择顺序获取所选文件的列表。 有可能吗?是的,从技术上讲,这可以通过java.beans.PropertyChangeListener实现 final JFileChooser diag = new JFileChooser(); diag.setMultiSelectionEnabled(true); final List<File> chosen = new ArrayList<File>(); diag.addPr

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

是的,从技术上讲,这可以通过
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
final JFileChooser diag=new JFileChooser();
diag.setMultiSelectionEnabled(真);
选择的最终列表=新的ArrayList();
diag.addPropertyChangeListener(
JFileChooser.SELECTED\u FILES\u CHANGED\u属性,
新属性ChangeListener(){
@凌驾
公共无效属性更改(属性更改事件e){
所选列表=Arrays.asList(diag.getSelectedFiles());
Iterator it=selected.Iterator();
while(it.hasNext())
如果(!selected.contains(it.next()))
it.remove();
用于(文件:选定)
如果(!selected.contains(文件))
选择。添加(文件);
}
});
if(diag.showOpenDialog(null)=JFileChooser.APPROVE\u选项){
//“selected”按选择顺序保存所选文件

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

你尝试了什么?第一部分,是的,第二部分,不太稳定