我希望JFileChoser选择多个文件,并按照选择的顺序获取所选文件的列表。 有可能吗?
答案 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
不优雅,我不知道这是多么稳定。