Java JFileChoser按选择顺序选择多个文件
我希望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
有可能吗?是的,从技术上讲,这可以通过
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”按选择顺序保存所选文件
不优雅,我不知道这有多稳定。你尝试了什么?第一部分,是的,第二部分,不太稳定