gpt4 book ai didi

java - JFileChooser 按照单击的顺序打开多个文件

转载 作者:行者123 更新时间:2023-11-30 08:18:44 26 4
gpt4 key购买 nike

我有一个应用程序,它接受多个文件并根据它们的顺序应用一些操作(例如将它们一个接一个地合并)。

用户可以通过 Ctrl+单击或 Shift+单击以任意顺序选择文件。

选择器返回的列表文件的顺序与用户单击它们的顺序不同。我希望它们按照用户单击它们的顺序返回。

免责声明:我是“用户”

我在 Windows 7 64 位和 JDK 7 上使用具有 Java 外观的 JFileChooser 类。

这是一个最小的例子

package choosertest;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;

public class ChooserTest extends JFrame {

JFileChooser chooser;

public ChooserTest() {
chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

testOpen();
}

public static void main(String[] args) {
new ChooserTest();
}

private void testOpen() {
int choice = chooser.showOpenDialog(this);

if (choice == JFileChooser.APPROVE_OPTION) {

File[] inputFiles = chooser.getSelectedFiles();
for (File f: inputFiles) {
System.out.println(f.getName());
}
}
}

}

最佳答案

您可能会考虑在选择后使用 JTable/JList 之类的工具对文件重新排序,而不是根据 JFileChooser 中的选择顺序对文件进行排序。尽管如此,您也许能够插入 JFileChooser 的监听器系统,通过向 JFileChooser 添加 PropertyChangeListener 来获取选择顺序。每当选择文件时,都会触发“SelectedFilesChangedProperty”,并且 PropertyChangeEvent.getNewValue() 应返回所选文件

    final JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.addPropertyChangeListener(new PropertyChangeListener(){

@Override
public void propertyChange(PropertyChangeEvent evt) {
if ( evt.getPropertyName().equals("SelectedFilesChangedProperty") ){
System.out.println(Arrays.toString((File[])evt.getNewValue()));
}
}
});

您需要检查 getNewValue() 返回的文件数组,以查看选择(或取消选择)哪个新文件来维持顺序。

关于java - JFileChooser 按照单击的顺序打开多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com