如何将JavaFileList写入剪贴板?

如何将JavaFileList写入剪贴板?,java,clipboard,Java,Clipboard,在过去的几天里,我一直在用Java开发设备之间的剪贴板同步实用程序 我唯一一直在努力的事情就是把文件写到剪贴板上。 我可以使用javaFileListFlavor读取文件列表,但在将另一个文件列表写入剪贴板时,不会发生任何事情 这是可转让类: public class TransferableFiles implements Serializable, Transferable { private List<File> data; public Transferab

在过去的几天里,我一直在用Java开发设备之间的剪贴板同步实用程序

我唯一一直在努力的事情就是把文件写到剪贴板上。 我可以使用
javaFileListFlavor
读取文件列表,但在将另一个文件列表写入剪贴板时,不会发生任何事情

这是可转让类:

public class TransferableFiles implements Serializable, Transferable {
    private List<File> data;

    public TransferableFiles(List<File> data) {
        super();

        this.data = data;
    }

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

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

    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
        if (flavor.equals(DataFlavor.javaFileListFlavor)) {
            return data;
        } else {
            throw new UnsupportedFlavorException(flavor);
        }
    }

    public List<File> getData() {
        return data;
    }

    public String toString() {
        return data.toString();
    }
}
公共类可转移文件实现可序列化、可转移{
私人名单数据;
公共可传输文件(列表数据){
超级();
这个数据=数据;
}
公共DataFlavor[]getTransferDataFlavors(){
返回新的DataFlavor[]{DataFlavor.javaFileListFlavor};
}
@凌驾
支持公共布尔值IsDataFlavor(DataFlavor){
返回(flavor.equals(DataFlavor.javaFileListFlavor));
}
公共对象getTransferData(DataFlavor flavor)引发不受支持的LavorException{
if(flavor.equals(DataFlavor.javaFileListFlavor)){
返回数据;
}否则{
抛出新的不受支持的LavorException(flavor);
}
}
公共列表getData(){
返回数据;
}
公共字符串toString(){
返回data.toString();
}
}
我在信中写道:

private static void writeToClipboard(Transferable transferable) {
    getSystemClipboard().setContents(transferable, null);
}

public static void writeFilesToClipboard(List<File> files) {
    writeToClipboard(new TransferableFiles(files));
}

public static void main(String[] args) {
    List<File> files = new ArrayList<File>();
    files.add(new File("x"));
    files.add(new File("y"));
    files.add(new File("z"));

    writeFilesToClipboard(files);
}
私有静态无效写入剪贴板(可转移){
getSystemClipboard().setContents(可转移,空);
}
公共静态无效WriteFileToClipboard(列表文件){
WriteTo剪贴板(新的可传输文件(文件));
}
公共静态void main(字符串[]args){
列表文件=新的ArrayList();
添加(新文件(“x”);
添加(新文件(“y”);
添加(新文件(“z”);
writeFilesToClipboard(文件);
}