`
uyerp
  • 浏览: 11844 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

剪贴板

阅读更多
Java提供两种类型的剪贴板:系统的和本地的. 
      本地剪贴板只在当前虚拟机中有效.Java允许多个本地剪贴板同时存在,可以方便地通过剪贴板的名称来进行存取访问.系统剪贴板与同等操作系统直接关连,允许应用程序与运行在该操作系统下的其它程序之间进行信息交换. 

    在进一步深入之前,先看看与剪贴板相同的java类,这些类主要包含在java.awt.datatransfer包中,主要有以下几种: 
Clipboard类: 处理任何可以被传递的对象. 
ClipboardOwner接口: 任何处理剪贴板的类都必须实现该接口.该接口用于剪贴板中的原始数据被替换时发出通知. 
Dataflavor类: 表现被传递的对象支持的所有数据类型. 
StringSelection类: java支持的一种可被传递的类. 
Transferable接口: 包装传递到剪贴板的对象. 
UnsupportedFlavor Exception类: 由可传递对象抛出的异常,表示不对象的数据类型(data flavor) 

Clipboard类 
Clipboard是存取剪贴板的链接.它包含三个方法: 
String getName() 
void setContents(Transferable, ClipboardOwner) 
Transferable getContent(Object) 
访问系统剪贴板,可以瘵系统剪贴板的引用赋值给一个Clipboard对象,如: 
Clipboard clipboard = getToolKit().getSystemClipboard(); 
创建一个本地剪贴板,可以通过传递剪贴板的名称到构造方法中: 
Clipboard clipboard = new Clipboard("My first clipboard"); 

ClipboardOwner接口 
ClipboardOwner唯一的功能就是当(剪贴板)拥有者的数据被其它类覆盖时通知它.同时它可以用用通知应用程序释放关联到数据的资源的信号. 
在具体应用中,lostOwnership方法可以用于设置标志,该标志用于通知应用有关剪贴板中数据的可见性 

Java代码 
java.awt.datatransfer.Clipboard clipboard=java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); //获得系统剪切板   
  
//下面是我的记事本部分功能.e.getSource()是当触发了某个事件.这里是copy的代码,下面依此是粘贴,等代码.可以看你需要的部分.(关于clopboard的).都是汉语拼音命名的变良.   
  
else if(e.getSource()==fuZhi||e.getSource()==fuZhi2)//////////Copy 'fuZhi' is 'Copy'   
{   
String temp=text.getSelectedText();   
stringSelection=new StringSelection(temp);   
clipboard.setContents(stringSelection,null);   
}   
  
else if(e.getSource()==jianQie||e.getSource()==jianQie2)//////////'jianQie' is 'Cut'   
{   
String temp=text.getSelectedText();   
stringSelection=new StringSelection(temp);   
clipboard.setContents(stringSelection,null);   
int start=text.getSelectionStart();   
int end=text.getSelectionEnd();   
text.replaceRange("",start,end);   
}   
//这里是粘贴.主要是如何从系统剪切板里取得数据.   
else if(e.getSource()==zhanTie||e.getSource()==zhanTie2)///////////////'zhanTie' is 'Paste'.   
{   
java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);   
java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor;   
if(transferable.isDataFlavorSupported(flavor))   
{   
try  
{   
int start=text.getSelectionStart();   
int end=text.getSelectionEnd();   
text.replaceRange("",start,end);   
String str;   
int n=text.getCaretPosition();   
str=(String)transferable.getTransferData(flavor);   
text.insert(str,n);   
}   
catch(Exception ee)   
{   
  
}   
      }   
}   
java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);//传送操作提供数据的类定义接口.放在剪切板的东西都实现了这个接口.   
  
java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor//在数据拖放期间,或在文件系统中,当每个实例显示在剪切板上时,它代表了数据格式的不透明概念.其实就是在系统内存中的东西是哪种类型.比如:文本,图片等.就象网页中的contentType="text/html"等一样.这里的stringFlavor是字符类型.   
  
  
通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。   
通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。   
  
Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;系统剪切板通过   
  
Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();   
  
获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据   
  
1. 从指定的剪切板中获取文本内容   
  
protected static String getClipboardText(Clipboard clip) throws Exception{   
   // 获取剪切板中的内容   
   Transferable clipT = clip.getContents(null);   
   if (clipT != null) {   
    // 检查内容是否是文本类型   
    if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))   
     return (String)clipT.getTransferData(DataFlavor.stringFlavor);    
   }   
   return null;   
}    
  
  
2. 往剪切板写文本数据   
  
protected static void setClipboardText(Clipboard clip, String writeMe) {   
   Transferable tText = new StringSelection(writeMe);   
   clip.setContents(tText, null);   
}    
  
  
3. 从剪切板读取图像   
  
public static Image getImageFromClipboard() throws Exception{   
   Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();   
   Transferable cc = sysc.getContents(null);   
   if (cc == null)   
    return null;   
   else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))   
    return (Image)cc.getTransferData(DataFlavor.imageFlavor);   
   return null;   
}    
  
  
4. 写图像到剪切板   
  
protected static void setClipboardImage2(final Image image) {   
   Transferable trans = new Transferable(){   
    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(isDataFlavorSupported(flavor))   
      return image;   
     throw new UnsupportedFlavorException(flavor);   
    }   
  
   };   
   Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);   
}   
  
  
有了这四个方法,你下面可以自己写一些程序来进行测试,利用它来实现与其他程序结合测试对剪切板数据的操作。这里给出一个用于显示图像的类,只要把Image实例作为参数传入即可。   
  
/*  
* Created on 2004-12-23  
* 查看图形的窗口  
*/  
package javayou.clipboard;   
  
import java.awt.Frame;   
import java.awt.Graphics;   
import java.awt.Image;   
import java.awt.MediaTracker;   
import java.awt.event.WindowAdapter;   
import java.awt.event.WindowEvent;   
  
/**  
* @author Winter Lau 用于显示图形的窗口  
*/  
public class ImageViewer extends Frame {   
  
private Image image;   
  
/**  
   * 显示一个图像  
   * @param viewMe  
   */  
public ImageViewer(Image viewMe) {   
   image = viewMe;   
   MediaTracker mediaTracker = new MediaTracker(this);   
   mediaTracker.addImage(image, 0);   
   try {   
    mediaTracker.waitForID(0);   
   } catch (InterruptedException ie) {   
    ie.printStackTrace();   
    System.exit(1);   
   }   
   addWindowListener(new WindowAdapter() {   
    public void windowClosing(WindowEvent e) {   
     System.exit(0);   
    }   
   });   
   //窗口适应图像大小   
   setSize(image.getWidth(null), image.getHeight(null));   
   //窗口标题   
   setTitle("Viewing Image from Clipboard");    
   setVisible(true);   
}   
  
public void paint(Graphics graphics) {   
   graphics.drawImage(image, 0, 0, null);   
}   
  
/**  
   * 用于读取图像文件并生成Image对象  
   */  
public static Image getImageFromFile(String fileName) {   
   Toolkit toolkit = Toolkit.getDefaultToolkit();   
   Image image = toolkit.getImage(fileName);   
   return image;   
}   
  
}  

java.awt.datatransfer.Clipboard clipboard=java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); //获得系统剪切板

//下面是我的记事本部分功能.e.getSource()是当触发了某个事件.这里是copy的代码,下面依此是粘贴,等代码.可以看你需要的部分.(关于clopboard的).都是汉语拼音命名的变良.

else if(e.getSource()==fuZhi||e.getSource()==fuZhi2)//////////Copy 'fuZhi' is 'Copy'
{
String temp=text.getSelectedText();
stringSelection=new StringSelection(temp);
clipboard.setContents(stringSelection,null);
}

else if(e.getSource()==jianQie||e.getSource()==jianQie2)//////////'jianQie' is 'Cut'
{
String temp=text.getSelectedText();
stringSelection=new StringSelection(temp);
clipboard.setContents(stringSelection,null);
int start=text.getSelectionStart();
int end=text.getSelectionEnd();
text.replaceRange("",start,end);
}
//这里是粘贴.主要是如何从系统剪切板里取得数据.
else if(e.getSource()==zhanTie||e.getSource()==zhanTie2)///////////////'zhanTie' is 'Paste'.
{
java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);
java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor;
if(transferable.isDataFlavorSupported(flavor))
{
try
{
int start=text.getSelectionStart();
int end=text.getSelectionEnd();
text.replaceRange("",start,end);
String str;
int n=text.getCaretPosition();
str=(String)transferable.getTransferData(flavor);
text.insert(str,n);
}
catch(Exception ee)
{

}
      }
}
java.awt.datatransfer.Transferable transferable=clipboard.getContents(this);//传送操作提供数据的类定义接口.放在剪切板的东西都实现了这个接口.

java.awt.datatransfer.DataFlavor flavor=java.awt.datatransfer.DataFlavor.stringFlavor//在数据拖放期间,或在文件系统中,当每个实例显示在剪切板上时,它代表了数据格式的不透明概念.其实就是在系统内存中的东西是哪种类型.比如:文本,图片等.就象网页中的contentType="text/html"等一样.这里的stringFlavor是字符类型.


通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。
通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。

Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;系统剪切板通过

Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();

获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据

1. 从指定的剪切板中获取文本内容

protected static String getClipboardText(Clipboard clip) throws Exception{
   // 获取剪切板中的内容
   Transferable clipT = clip.getContents(null);
   if (clipT != null) {
    // 检查内容是否是文本类型
    if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))
     return (String)clipT.getTransferData(DataFlavor.stringFlavor); 
   }
   return null;
} 


2. 往剪切板写文本数据

protected static void setClipboardText(Clipboard clip, String writeMe) {
   Transferable tText = new StringSelection(writeMe);
   clip.setContents(tText, null);
} 


3. 从剪切板读取图像

public static Image getImageFromClipboard() throws Exception{
   Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
   Transferable cc = sysc.getContents(null);
   if (cc == null)
    return null;
   else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))
    return (Image)cc.getTransferData(DataFlavor.imageFlavor);
   return null;
} 


4. 写图像到剪切板

protected static void setClipboardImage2(final Image image) {
   Transferable trans = new Transferable(){
    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(isDataFlavorSupported(flavor))
      return image;
     throw new UnsupportedFlavorException(flavor);
    }

   };
   Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
}


有了这四个方法,你下面可以自己写一些程序来进行测试,利用它来实现与其他程序结合测试对剪切板数据的操作。这里给出一个用于显示图像的类,只要把Image实例作为参数传入即可。

/*
* Created on 2004-12-23
* 查看图形的窗口
*/
package javayou.clipboard;

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
* @author Winter Lau 用于显示图形的窗口
*/
public class ImageViewer extends Frame {

private Image image;

/**
   * 显示一个图像
   * @param viewMe
   */
public ImageViewer(Image viewMe) {
   image = viewMe;
   MediaTracker mediaTracker = new MediaTracker(this);
   mediaTracker.addImage(image, 0);
   try {
    mediaTracker.waitForID(0);
   } catch (InterruptedException ie) {
    ie.printStackTrace();
    System.exit(1);
   }
   addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
     System.exit(0);
    }
   });
   //窗口适应图像大小
   setSize(image.getWidth(null), image.getHeight(null));
   //窗口标题
   setTitle("Viewing Image from Clipboard"); 
   setVisible(true);
}

public void paint(Graphics graphics) {
   graphics.drawImage(image, 0, 0, null);
}

/**
   * 用于读取图像文件并生成Image对象
   */
public static Image getImageFromFile(String fileName) {
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image image = toolkit.getImage(fileName);
   return image;
}

}
很简单的啊,尝试过,没有问题!
ygxu (中级程序员) 2009-06-18 
Java代码 
/**  
 
*片段  
 
*/     
  
Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();   
  
else if(source == copyItem){//复制 把所选内容送到剪贴板   
   String text = textArea.getSelectedText();   
   StringSelection  selection = new StringSelection(text);//复制step1:生成Transferable 接口对象。剪贴板只能放该类型的对象。 StringSelection类实现了Transferable接口。   
   clipBoard.setContents(selection , null);//复制step2.第二个参数是Owner。   
  }   
  else if(source == cutItem){//剪切 在复制的基础上多了一个替换。   
   String text = textArea.getSelectedText();   
   StringSelection  selection = new StringSelection(text);   
   clipBoard.setContents(selection , null);   
   textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); //替换为空串     
  }   
  else if(source == pasteItem){//粘贴 把剪贴板内容送到文本域   
   Transferable contents =clipBoard.getContents(this);//粘贴step1。   
   if(contents==null) return;   
   String text = "";   
      try{   
       text = (String)contents.getTransferData(DataFlavor.stringFlavor);//粘贴step2.   
      }catch(Exception exception){   
       System.out.println(exception.getStackTrace());   
      }   
      textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());   //粘贴step3    
  }    

/**

*片段

*/  

Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();

else if(source == copyItem){//复制 把所选内容送到剪贴板
   String text = textArea.getSelectedText();
   StringSelection  selection = new StringSelection(text);//复制step1:生成Transferable 接口对象。剪贴板只能放该类型的对象。 StringSelection类实现了Transferable接口。
   clipBoard.setContents(selection , null);//复制step2.第二个参数是Owner。
  }
  else if(source == cutItem){//剪切 在复制的基础上多了一个替换。
   String text = textArea.getSelectedText();
   StringSelection  selection = new StringSelection(text);
   clipBoard.setContents(selection , null);
   textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); //替换为空串  
  }
  else if(source == pasteItem){//粘贴 把剪贴板内容送到文本域
   Transferable contents =clipBoard.getContents(this);//粘贴step1。
   if(contents==null) return;
   String text = "";
      try{
       text = (String)contents.getTransferData(DataFlavor.stringFlavor);//粘贴step2.
      }catch(Exception exception){
       System.out.println(exception.getStackTrace());
      }
      textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());   //粘贴step3 
  }  


Java代码 
簡單的將String寫入到操作系統的剪貼板中,可以參考:   
import   java.awt.Toolkit;   
import   java.awt.datatransfer.Clipboard;   
import   java.awt.datatransfer.StringSelection;   
import   java.awt.datatransfer.Transferable;   
public   class   WriteString   
{   
public   static   void   main(String[]   args)   
{   
Clipboard   sysc   =   Toolkit.getDefaultToolkit().getSystemClipboard();   
setClipboardString(sysc, "寫入剪貼板的String ");   
}   
  
protected   static   void   setClipboardString(Clipboard   clip,   String   writeMe)   {     
Transferable   tText   =   new   StringSelection(writeMe);     
clip.setContents(tText,   null);     
}     
  
}   
  由於拷貝String,jdk中已經有類StringSelection支持,如果要拷貝一個文件,或者目錄,則要參考此類,對其進行修改,類名:FileSelection.java   (改的可能不是很成功,但能夠用)   
      內容為:   
/*   @(#)FileSelection.java   07/05/14  
  *   @author     me  
  *     Copy   file   from   FoxEDM,Paste   to   System(e.g:2000   or   xp   etc)      
  */  
package   com.foxera.foxlink.ui;   
  
import   java.awt.datatransfer.Clipboard;   
import   java.awt.datatransfer.ClipboardOwner;   
import   java.awt.datatransfer.DataFlavor;   
import   java.awt.datatransfer.Transferable;   
import   java.awt.datatransfer.UnsupportedFlavorException;   
import   java.io.*;   
import   java.util.List;   
import   java.util.ArrayList;   
/**  
  *   A   <code> Transferable </code>   which   implements   the   capability   required  
  *   to   transfer   a   <code> String </code> .  
  *  
  *   This   <code> Transferable </code>   properly   supports  
  *   <code> DataFlavor.javaFileListFlavor </code>  
  *   and   all   equivalent   flavors.   Support   for  
  *   <code> DataFlavor.plainTextFlavor </code>  
  *   and   all   equivalent   flavors   is   <b> deprecated </b> .   No   other  
  *   <code> DataFlavor </code> s   are   supported.  
  *  
  *   @see   java.awt.datatransfer.DataFlavor#javaFileListFlavor  
  *   @see   java.awt.datatransfer.DataFlavor#plainTextFlavor  
  */  
public   class   FileSelection   implements   Transferable,   ClipboardOwner   {   
  
        private   static   final   int   FILE=   0;   
        private   static   final   int   PLAIN_FILE   =   1;   
  
        private   static   final   DataFlavor[]   flavors   =   {   
                DataFlavor.javaFileListFlavor,   
DataFlavor.javaFileListFlavor     
        };   
  
        private   List   data;   
        
        /**  
          *   Creates   a   <code> Transferable </code>   capable   of   transferring  
          *   the   specified   <code> String </code> .  
          */  
        public   FileSelection(List   data)   {   
                this.data   =   data;   
        }   
  
        /**  
          *   Returns   an   array   of   flavors   in   which   this   <code> Transferable </code>  
          *   can   provide   the   data.   <code> DataFlavor.javaFileListFlavor </code>  
          *   is   properly   supported.  
          *   Support   for   <code> DataFlavor.plainTextFlavor </code>   is  
          *   <b> deprecated </b> .  
          *  
          *   @return   an   array   of   length   two,   whose   elements   are   <code> DataFlavor.  
          *                   stringFlavor </code>   and   <code> DataFlavor.plainTextFlavor </code>  
          */  
        public   DataFlavor[]   getTransferDataFlavors()   {   
                //   returning   flavors   itself   would   allow   client   code   to   modify   
                //   our   internal   behavior   
return   (DataFlavor[])flavors.clone();   
        }   
  
        /**  
          *   Returns   whether   the   requested   flavor   is   supported   by   this  
          *   <code> Transferable </code> .  
          *  
          *   @param   flavor   the   requested   flavor   for   the   data  
          *   @return   true   if   <code> flavor </code>   is   equal   to  
          *       <code> DataFlavor.javaFileListFlavor </code>   or  
          *       <code> DataFlavor.plainTextFlavor </code> ;   false   if   <code> flavor </code>  
          *       is   not   one   of   the   above   flavors  
          *   @throws   NullPointerException   if   flavor   is   <code> null </code>  
          */  
        public   boolean   isDataFlavorSupported(DataFlavor   flavor)   {   
//   JCK   Test   StringSelection0003:   if   'flavor '   is   null,   throw   NPE   
                for   (int   i   =   0;   i   <   flavors.length;   i++)   {   
        if   (flavor.equals(flavors[i]))   {   
                return   true;   
        }   
}   
return   false;   
        }   
  
        /**  
          *   Returns   the   <code> Transferable </code> 's   data   in   the   requested  
          *   <code> DataFlavor </code>   if   possible.   If   the   desired   flavor   is  
          *   <code> DataFlavor.javaFileListFlavor </code> ,   or   an   equivalent   flavor,  
          *   the   <code> String </code>   representing   the   selection   is  
          *   returned.   If   the   desired   flavor   is  
          *   <code> DataFlavor.plainTextFlavor </code> ,  
          *   or   an   equivalent   flavor,   a   <code> Reader </code>   is   returned.  
          *   <b> Note: </b>   The   behavior   of   this   method   for  
          *   </code> DataFlavor.plainTextFlavor </code>  
          *   and   equivalent   <code> DataFlavor </code> s   is   inconsistent   with   the  
          *   definition   of   <code> DataFlavor.plainTextFlavor </code> .  
          *  
          *   @param   flavor   the   requested   flavor   for   the   data  
          *   @return   the   data   in   the   requested   flavor,   as   outlined   above  
          *   @throws   UnsupportedFlavorException   if   the   requested   data   flavor   is  
          *                   not   equivalent   to   either   <code> DataFlavor.stringFlavor </code>  
          *                   or   <code> DataFlavor.plainTextFlavor </code>  
          *   @throws   IOException   if   an   IOException   occurs   while   retrieving   the   data.  
          *                   By   default,   StringSelection   never   throws   this   exception,   but   a  
          *                   subclass   may.  
          *   @throws   NullPointerException   if   flavor   is   <code> null </code>  
          *   @see   java.util.ArrayList <E>  
          */  
        public   Object   getTransferData(DataFlavor   flavor)   
                throws   UnsupportedFlavorException,   IOException   
        {   
if   (flavor.equals(flavors[FILE]))   {   
        return   (Object)data;   
}   else   if   (flavor.equals(flavors[PLAIN_FILE]))   {   
        return   new   ArrayList <File> (data   ==   null   ?   null   :   data);   
}   else   {   
        throw   new   UnsupportedFlavorException(flavor);   
}   
        }   
  
        public   void   lostOwnership(Clipboard   clipboard,   Transferable   contents)   {   
        }   
  
}   
  
測試代碼為:   
import   java.awt.Toolkit;   
import   java.awt.datatransfer.Clipboard;   
import   java.awt.datatransfer.Transferable;   
import   java.util.List;   
import   java.io.File;   
import   java.util.ArrayList;   
public   class   WriteFile   
{   
public   static   void   main(String[]   args)   
{   
Clipboard   sysc   =   Toolkit.getDefaultToolkit().getSystemClipboard();   
  
File   file     =   new   File( "c:\\1.txt ");//目錄也可以   
List <File>   listFile   =   new   ArrayList <File> ();   
listFile.add(file);   
setClipboardFile(sysc,listFile);   
}   
  
protected   static   void   setClipboardFile(Clipboard   clip,   List   writeMe)   {     
Transferable   tFile   =   new   FileSelection(writeMe);     
clip.setContents(tFile,   null);     
}     
  
}   
  
從操作系統的剪貼板中讀取資料,可以參考:   
protected   static   String   getClipboardContent(Clipboard   clip)   throws   Exception{   
    //get   content   from   clipboard   
    Transferable   clipT   =   clip.getContents(null);   
    if   (clipT   !=   null)   {   
      //   check   content 's   type       
      if   (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))   
      {   
      return   (String)clipT.getTransferData(DataFlavor.stringFlavor);         
      }   
      else   if(clipT.isDataFlavorSupported(DataFlavor.javaFileListFlavor))   
      {   
      Object   ob   =   clipT.getTransferData(DataFlavor.javaFileListFlavor);   
      List   fileList   =   (List)ob;   
      if((fileList   !=   null)&&(fileList.size()   >   0))   
      {   
      for(int   k=0;k <fileList.size();k++)   
      {   
  System.out.println(((File)fileList.get(k)).getAbsolutePath());   
  //根據路徑拷貝文件   
      }   
      }   
      }   
    }   
    return   null;   
}  
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    易语言从剪切板取图片

    1. 剪切板接口:易语言提供了对剪切板操作的接口,如`系统剪贴板.取得位图()`函数,用于从剪切板中获取位图数据。这个函数返回一个位图对象,可以进一步处理或显示。 2. 位图对象:位图对象是易语言中表示图像的...

    剪切板-delphi实现监视剪贴板

    "剪切板-监视剪贴板.png"可能是一个示例程序的截图,展示如何在Delphi环境下设置剪切板监视器,而".dpr"、".dfm"和".dcu"等文件是Delphi项目和组件的配置文件,它们包含了程序的源代码、界面设计和编译后的单元文件...

    清空剪切板ClearOfficeClipboard

    标题中的"清空剪切板ClearOfficeClipboard"就是针对这一需求的一个功能。 在Excel VBA中,虽然没有直接的函数来清空剪贴板,但我们可以利用一些技巧来实现这个功能。通常,我们会使用API(应用程序接口)调用来与...

    剪切板查看器—clipbrd

    用于查看复制和剪切到剪切板中的内容! “剪贴薄查看器”概述当您从某个程序剪切或复制信息时,该信息会被移动到剪贴板并保留在那里,直到您清除剪贴板或者您剪切或复制了另一片信息。“剪贴簿查看器”中的剪贴板...

    剪贴板查看神器,看看谁用了你的剪贴板

    "剪贴板查看神器"是一款专门针对剪贴板活动进行监控和分析的工具,它能够帮助用户了解哪些程序或进程在何时访问并使用了剪贴板内容。这对于日常使用电脑时的安全意识提升,以及开发者在调试代码时查找问题来源都有很...

    vba清空剪贴板内容

    除了清空剪贴板,VBA还提供了其他剪贴板操作,如读取和写入剪贴板数据。例如,使用`SetData`和`GetData`函数可以实现数据的复制和粘贴。 五、实践应用 在实际应用中,你可以在适当的地方调用`ClearClipboard`子程序...

    java操作剪贴板

    在Java编程中,剪贴板操作是一个非常实用的功能,它允许程序之间共享数据,比如文本、图片等。本文将深入探讨如何使用Java API来实现剪贴板操作,并通过一个简单的示例程序`ClipBoardTest.java`来阐述核心概念。 ...

    QML使用剪贴板

    在QML中,剪贴板(Clipboard)是一个用于在应用程序之间交换数据的工具。它可以用来复制、剪切和粘贴文本、图像等信息。在QML中,我们使用`QtQuick.Controls`模块中的`Clipboard`对象来访问和操作剪贴板。这个功能...

    c#实现Windows剪贴板监视器

    在编程领域,尤其是在Windows应用程序开发中,有时我们需要监控用户的剪贴板操作,以便在特定情况下进行响应或记录。本文将详细介绍如何使用C#语言来实现一个Windows剪贴板监视器。 首先,剪贴板是操作系统提供的一...

    剪切板 网页操作

    在IT行业中,剪切板操作是一项基础但至关重要的功能,特别是在网页交互和编程语言如C++及VC(Visual C++)的应用中。剪切板是操作系统提供的一种共享数据的机制,用户可以通过它来复制、剪切和粘贴信息。下面我们将...

    c++实现将剪贴板内容保存为bmp图

    在C++编程中,将剪贴板的内容保存为BMP图像文件涉及到几个关键知识点,包括剪贴板操作、图像处理和BMP文件格式的理解。首先,我们需要了解Windows API中的剪贴板函数,然后掌握如何解析和创建BMP文件,最后通过实际...

    jQuery获取剪贴板内容的方法

    在当今Web开发中,操作剪贴板功能是用户日常交互的一个重要方面。尽管如此,直接在网页中访问剪贴板是受到限制的,因为出于安全考虑,浏览器默认不允许脚本直接读取剪贴板数据。然而,某些场景下,例如在线文本编辑...

    delphi 获取剪切板图像_获取剪切板图像_delphi源码_poolz1i_

    在Delphi编程环境中,获取剪贴板中的图像是一项常见的任务,尤其在涉及到用户交互和数据交换的场景下。本文将详细讲解如何利用Delphi的API函数来实现这一功能,并提供一个简单的源码示例。 首先,剪贴板是操作系统...

    AHK 拷贝 win 资源管理器选择文件的文件名与路径到剪切板

    win 资源管理器选择文件的文件名与路径到剪切板”指的是使用 AutoHotkey (AHK) 这款自动化脚本语言,编写脚本来实现在Windows资源管理器中选中多个文件后,一键将这些文件的完整路径和名称复制到剪贴板的功能。...

    VB.NET实现Windows剪贴板监视器

    通过创建这样的应用,开发者可以监控系统剪贴板的变化,例如文本、图像或其他数据类型的复制、剪切和粘贴活动。 首先,了解Windows剪贴板是操作系统提供的一种共享内存区域,用于临时存储数据,以便于在不同的应用...

    C#获取剪切板内容

    本文将深入探讨如何使用C#获取剪切板内容,这在日常编程中是一个非常实用的功能,比如在实现复制、粘贴或者数据交换的场景下。 首先,我们需要了解Windows操作系统中的剪切板。剪切板是系统提供的一种临时存储数据...

    PB剪切板工具

    "PB剪切板工具"是一款高效实用的剪贴板管理软件,专为提高用户在日常电脑操作中的复制、粘贴效率而设计。该工具的独特之处在于它能够保存并展示用户的多次复制历史,使得用户不再局限于操作系统自带的单一剪贴板功能...

    C# 复制图片 剪切板

    在本案例中,我们关注的是使用C#语言实现从网页中复制图片并将其存储到剪切板,以便用户可以方便地在不同应用程序之间进行粘贴,如微信或QQ。以下是对这个主题的详细讲解: 首先,我们需要理解剪切板是什么。剪切板...

    用VB将剪切板中的图片保存为JPG文件\捕获屏幕快照的程序,可制作用户手册

    本项目“用VB将剪切板中的图片保存为JPG文件”是利用VB来实现的一个实用功能,它能够捕获屏幕快照并将其保存为JPEG(JPG)格式的图像文件,这对于制作用户手册或教程文档非常有用。 首先,我们需要了解VB中的剪贴板...

    delphi获取处理剪贴板中Excel中的数据,封装成自定义的数据集

    `OpenClipboard`函数用于打开剪贴板,`EmptyClipboard`清空剪贴板,`SetClipboardData`设置剪贴板数据,而`CloseClipboard`则关闭剪贴板。当从Excel复制数据时,剪贴板上通常包含多种数据格式,如CF_TEXT、CF_...

Global site tag (gtag.js) - Google Analytics