Java中剪切板的操作

Java中有时需要操作系统剪切板的问题,下面演示如何用Java操作系统剪切板,就是定义一个类其中引入需要的包,设计需要的方法,为了不用建立实例即可直接使用,可把方法设置为静态方法 static ,具体步骤如下:

1,引入对应的包

import java.io.IOException;
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.datatransfer.UnsupportedFlavorException;
import java.awt.Image;

2,设置系统剪切板内容[内容为文本]

public static void setSystemClipboard(String refContent){ 
//设置为static是为了直接使用,不用new一个该类的实例即可直接使用,即定义的: 类名.方法名
	String vc = refContent.trim();
	StringSelection ss = new StringSelection(vc);
	
	Clipboard sysClb=null;
	sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();
	sysClb.setContents(ss,null);
	 
	//Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);  //跟上面三行代码效果相同
}


3,获取系统剪切板内容[剪切板中内容为文本型]

public static String getSystemClipboard(){//获取系统剪切板的文本内容[如果系统剪切板复制的内容是文本]
	Clipboard sysClb=null;
	sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();
	Transferable t = sysClb.getContents(null);
	//Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);  //跟上面三行代码一样
	try { 
		if (null != t && t.isDataFlavorSupported(DataFlavor.stringFlavor)) { 
		String text = (String)t.getTransferData(DataFlavor.stringFlavor); 
		return text; 
		} 
	} catch (UnsupportedFlavorException e) {
		//System.out.println("Error tip: "+e.getMessage());
	} catch (IOException e) { 
	} 	//System.out.println("Error tip: "+e.getMessage());
	return null; 
}


4,设置系统剪切板内容[内容为图片型]

public static void setImageClipboard(Image image) { 
	ImageSelection imgSel = new ImageSelection(image); 
	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null); 
} 

public static class ImageSelection implements Transferable { 
 	private Image image; 
	public ImageSelection(Image image) {this.image = image;} 
	  
	public DataFlavor[] getTransferDataFlavors() { 
		return new DataFlavor[]{DataFlavor.imageFlavor}; 
	} 
	  
	public boolean isDataFlavorSupported(DataFlavor flavor) { 
		return DataFlavor.imageFlavor.equals(flavor); 
	}
	  
	public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { 
		if (!DataFlavor.imageFlavor.equals(flavor)) {throw new UnsupportedFlavorException(flavor);} 
		return image; 
	}
}

5,获取系统剪切板内容[剪切板中内容为图片型]

public static Image getImageClipboard() { 
	Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 
	try { 
		if (null  != t && t.isDataFlavorSupported(DataFlavor.imageFlavor)) { 
		Image image = (Image)t.getTransferData(DataFlavor.imageFlavor); 
		return image; 
		} 
	} catch (UnsupportedFlavorException e) { 
		  //System.out.println("Error tip: "+e.getMessage());
	} catch (IOException e) { 
		  //System.out.println("Error tip: "+e.getMessage());
	} 
	return null; 
}

6,使用方式
类名.setSystemClipboard("这里是新设置的剪切板的内容");  //给剪切板设置文本型内容 

String clbContent = 类名.getSystemClipboard();  //获取剪切板的文本型内容

Image img = new Image("xpic.jpg")
类名.setImageClipboard(img);  //给剪切板设置图片型内容 
Image img2 = 类名.getImageClipboard(); //获取剪切板的图片型内容
操作的内容常用的有图片和文本型数据,当然还有其他的,可对应的修改方法,和引入对应的包;

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现截取指定区域的图形并复制到剪切板,可以使用Java AWT和Java Swing提供的类和方法,具体步骤如下: 1. 创建一个Robot对象,用于获取屏幕上的图像。 ```java Robot robot = new Robot(); ``` 2. 使用Robot对象的createScreenCapture方法截取指定区域的图形。该方法的参数是一个Rectangle对象,表示要截取的区域。 ```java Rectangle rectangle = new Rectangle(x, y, width, height); BufferedImage image = robot.createScreenCapture(rectangle); ``` 3. 将截取的图形复制到剪切板。可以使用Java Swing提供的类和方法,将图像封装到一个ImageSelection对象,再将该对象复制到剪切板。 ```java ImageSelection imageSelection = new ImageSelection(image); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imageSelection, null); ``` 完整的代码示例: ```java import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import javax.imageio.ImageIO; import java.io.File; public class ScreenCapture { public static void main(String[] args) throws Exception { int x = 100; int y = 100; int width = 200; int height = 200; // 创建Robot对象,用于获取屏幕上的图像 Robot robot = new Robot(); // 使用Robot对象的createScreenCapture方法截取指定区域的图形 Rectangle rectangle = new Rectangle(x, y, width, height); BufferedImage image = robot.createScreenCapture(rectangle); // 将截取的图形复制到剪切板 ImageSelection imageSelection = new ImageSelection(image); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imageSelection, null); // 将剪切板的内容输出到控制台 Transferable contents = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); if (contents != null && contents.isDataFlavorSupported(DataFlavor.stringFlavor)) { String text = (String) contents.getTransferData(DataFlavor.stringFlavor); System.out.println(text); } } private static class ImageSelection implements Transferable { private Image image; public ImageSelection(Image image) { this.image = image; } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { DataFlavor.imageFlavor }; } public boolean isDataFlavorSupported(DataFlavor flavor) { return DataFlavor.imageFlavor.equals(flavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!DataFlavor.imageFlavor.equals(flavor)) { throw new UnsupportedFlavorException(flavor); } return image; } } } ``` 注意,在使用Robot对象时,可能会抛出AWTException异常,需要进行异常处理。此外,在将图像复制到剪切板时,可能需要使用系统剪切板的API,而不是Java AWT和Java Swing提供的API,具体取决于操作系统的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值