gpt4 book ai didi

Swing 拖放文件可传输吗?

转载 作者:行者123 更新时间:2023-12-02 17:53:28 25 4
gpt4 key购买 nike

我想从我的应用程序拖放到系统文件夹中,这样当我放置一个项目时,它会显示为一个新文件,代表我拖动的对象。

我应该使用什么 DataFlavor?

最佳答案

我自己想出来了。您只需要使用 DataFlavor.javaFileListFlavor并在某处创建一个临时文件,一切正常。这对我有用:

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class FileTransferable implements Transferable
{
final private List<File> files;
final private DataFlavor[] flavors;

/**
* A drag-and-drop object for transfering a file.
* @param file file to transfer -- this file should already exist,
* otherwise it may not be accepted by drag targets.
*/
public FileTransferable(Collection<File> files) {
this.files = Collections.unmodifiableList(
new ArrayList<File>(files));
this.flavors = new DataFlavor[]
{ DataFlavor.javaFileListFlavor };
}

static FileTransferable createFileInTempDirectory(String filename)
throws IOException
{
File dir = new File(System.getProperty("java.io.tmpdir"));
File f = new File(dir, filename);
f.createNewFile();
return new FileTransferable(Collections.singletonList(f));
}

public List<File> getFiles() { return this.files; }

@Override public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException
{
if (isDataFlavorSupported(flavor))
return this.files;
else
return null;
}

@Override public DataFlavor[] getTransferDataFlavors() {
return this.flavors;
}

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

关于 Swing 拖放文件可传输吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879956/

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