Java复制到粘贴板的代码
Eave
2017.05.04
package com.wizardaws.tools.application;
import com.wizardaws.tools.image.Images;
import com.wizardaws.tools.utils.ListUtil;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
public class Copyboard
{
public static void main(String[] args) throws Exception
{
// 获取系统剪贴板
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// 复制文本到剪贴板
Transferable transferable0 = new StringSelection("Qian");
clipboard.setContents(transferable0, null);
// 复制图片到剪贴板
Transferable transferable1 = new ImageTransferable(Images.load("E:\\Pictures\\20240601210157.png"));
clipboard.setContents(transferable1, null);
// 复制文件到剪贴板
Transferable transferable2 = new FileTransferable(ListUtil.newArrayList(new File("E:\\Pictures\\20240601210157.png")));
clipboard.setContents(transferable2, null);
// 粘贴板上的数据是文字
if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor))
{
String content = (String) clipboard.getData(DataFlavor.stringFlavor);
System.out.println(content);
}
// 粘贴板上的数据是图片
else if(clipboard.isDataFlavorAvailable(DataFlavor.imageFlavor))
{
BufferedImage image = (BufferedImage) clipboard.getData(DataFlavor.imageFlavor);
Images.save(image, "D:\\124.png");
System.out.println(image.getType());
}
// 粘贴板上的数据是文件
else if(clipboard.isDataFlavorAvailable(DataFlavor.javaFileListFlavor))
{
// 获取文件列表
List files = (List) clipboard.getData(DataFlavor.javaFileListFlavor);
// 遍历文件列表,并保存每个文件到磁盘
for(File file : files)
{
System.out.println(file.getName() + "=>" + file.length()); // 指定保存路径和文件名
}
}
}
}
支持复制图片到剪切板的代码实现:ImageTransferable.java
package com.wizardaws.tools.application;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.image.BufferedImage;
public class ImageTransferable implements Transferable
{
private BufferedImage image;
public ImageTransferable(BufferedImage image)
{
this.image = image;
}
@Override
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[]{DataFlavor.imageFlavor}; // 返回图像数据的格式
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return DataFlavor.imageFlavor.equals(flavor); // 判断是否支持图像格式
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException
{
if(!isDataFlavorSupported(flavor))
{
throw new UnsupportedFlavorException(flavor);
}
return image; // 返回图像数据
}
}
支持复制文件到剪切板的代码实现:FileTransferable.java
package com.wizardaws.tools.application;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.util.List;
public class FileTransferable implements Transferable
{
private List<File> files;
public FileTransferable(List<File> files)
{
this.files = files;
}
@Override
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[]{DataFlavor.javaFileListFlavor}; // 返回文件数据的格式
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return DataFlavor.javaFileListFlavor.equals(flavor); // 判断是否支持文件格式
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException
{
if(!isDataFlavorSupported(flavor))
{
throw new UnsupportedFlavorException(flavor);
}
return files; // 返回文件数据
}
}