gpt4 book ai didi

java - 将压缩文件从 swing 拖放到 native [更新]

转载 作者:行者123 更新时间:2023-12-02 10:51:04 24 4
gpt4 key购买 nike

我正在尝试通过拖放操作将文件从压缩存档移动到 native 系统(基本上是 Windows 的 eplorer)。

此时我唯一的想法是创建一个 TransferHandler,当启动时,它将在临时目录中解压缩文件并将该文件设置为可传输。这是一段代码,可以让我更清楚:

private class FileTransferHandler extends TransferHandler {
protected Transferable createTransferable(JComponent c) {
List<File> files = new ArrayList<File>();

try {
File temp = createTempDirectory();
String path = temp.getAbsolutePath();
decompressTo(path);
files.add(new File(path));
} catch (Exception e) { e.printStackTrace(); };
return new FileTransferable(files);
}

public int getSourceActions(JComponent c) {
return COPY;
}
}

private class FileTransferable implements Transferable {
private List<File> files;

public FileTransferable(List<File> files) {
this.files = files;
}

public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{ DataFlavor.javaFileListFlavor };
}

public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(DataFlavor.javaFileListFlavor);
}

public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (!isDataFlavorSupported(flavor)) {
throw new UnsupportedFlavorException(flavor);
}
return files;
}
}

(不再有效:让我困惑的是,它以某种方式起作用:但前提是在我释放鼠标按钮后我不做任何其他事情。)

更新:经过更多测试,我发现在我单击接受该 DataFlavor 的区域后,实际上文件数据已从临时目录传输到目标位置。如果我单击某个文件夹,临时文件将传输到该文件夹​​。如果我单击控制台窗口,临时文件的路径将显示在控制台窗口中。

所以,如果您愿意,我希望得到一些指导,以正确的方式指导我。

p.s.:解压到临时文件夹的想法是在观察到 WinRar 正在做同样的事情之后产生的。

p.p.s.:抱歉,如果这个问题看起来很愚蠢,但我主要是一个刚刚涉足桌面编程的网络程序员。

最佳答案

嗯,这显然已经接近你能得到的最佳结果了。当我有时间的时候我会检查你的代码。

关于java - 将压缩文件从 swing 拖放到 native [更新],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672469/

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