Java中剪切板的操作

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

1,引入对应的包

[java]  view plain  copy
  1. import java.io.IOException;  
  2. import java.awt.Toolkit;  
  3. import java.awt.datatransfer.Clipboard;  
  4. import java.awt.datatransfer.DataFlavor;  
  5. import java.awt.datatransfer.StringSelection;  
  6. import java.awt.datatransfer.Transferable;  
  7. import java.awt.datatransfer.UnsupportedFlavorException;  
  8. import java.awt.Image;  

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

[java]  view plain  copy
  1. public static void setSystemClipboard(String refContent){   
  2. //设置为static是为了直接使用,不用new一个该类的实例即可直接使用,即定义的: 类名.方法名  
  3.     String vc = refContent.trim();  
  4.     StringSelection ss = new StringSelection(vc);  
  5.       
  6.     Clipboard sysClb=null;  
  7.     sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();  
  8.     sysClb.setContents(ss,null);  
  9.        
  10.     //Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);  //跟上面三行代码效果相同  
  11. }  


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

[java]  view plain  copy
  1. public static String getSystemClipboard(){//获取系统剪切板的文本内容[如果系统剪切板复制的内容是文本]  
  2.     Clipboard sysClb=null;  
  3.     sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();  
  4.     Transferable t = sysClb.getContents(null);  
  5.     //Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);  //跟上面三行代码一样  
  6.     try {   
  7.         if (null != t && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {   
  8.         String text = (String)t.getTransferData(DataFlavor.stringFlavor);   
  9.         return text;   
  10.         }   
  11.     } catch (UnsupportedFlavorException e) {  
  12.         //System.out.println("Error tip: "+e.getMessage());  
  13.     } catch (IOException e) {   
  14.     }   //System.out.println("Error tip: "+e.getMessage());  
  15.     return null;   
  16. }  


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

[java]  view plain  copy
  1. public static void setImageClipboard(Image image) {   
  2.     ImageSelection imgSel = new ImageSelection(image);   
  3.     Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null);   
  4. }   
  5.   
  6. public static class ImageSelection implements Transferable {   
  7.     private Image image;   
  8.     public ImageSelection(Image image) {this.image = image;}   
  9.         
  10.     public DataFlavor[] getTransferDataFlavors() {   
  11.         return new DataFlavor[]{DataFlavor.imageFlavor};   
  12.     }   
  13.         
  14.     public boolean isDataFlavorSupported(DataFlavor flavor) {   
  15.         return DataFlavor.imageFlavor.equals(flavor);   
  16.     }  
  17.         
  18.     public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {   
  19.         if (!DataFlavor.imageFlavor.equals(flavor)) {throw new UnsupportedFlavorException(flavor);}   
  20.         return image;   
  21.     }  
  22. }  

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

[java]  view plain  copy
  1. public static Image getImageClipboard() {   
  2.     Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);   
  3.     try {   
  4.         if (null  != t && t.isDataFlavorSupported(DataFlavor.imageFlavor)) {   
  5.         Image image = (Image)t.getTransferData(DataFlavor.imageFlavor);   
  6.         return image;   
  7.         }   
  8.     } catch (UnsupportedFlavorException e) {   
  9.           //System.out.println("Error tip: "+e.getMessage());  
  10.     } catch (IOException e) {   
  11.           //System.out.println("Error tip: "+e.getMessage());  
  12.     }   
  13.     return null;   
  14. }  

6,使用方式
[java]  view plain  copy
  1. 类名.setSystemClipboard("这里是新设置的剪切板的内容");  //给剪切板设置文本型内容   
  2.   
  3. String clbContent = 类名.getSystemClipboard();  //获取剪切板的文本型内容  
  4.   
  5. Image img = new Image("xpic.jpg")  
  6. 类名.setImageClipboard(img);  //给剪切板设置图片型内容   
  7. Image img2 = 类名.getImageClipboard(); //获取剪切板的图片型内容  
操作的内容常用的有图片和文本型数据,当然还有其他的,可对应的修改方法,和引入对应的包;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值