在Java中調用與系統有關的剪下板Clipboard

來源:互聯網
上載者:User

標籤:

java從1.5版開始已經能與系統的剪下板很好的互動了。

如果可以在程式中直接調用系統的剪下板來儲存“複製”的對象內容,那可以說的比之前的想法好很多。

下面是一個對java.io.File對象進行copy,paste操作的例子,雖然還不完善,但可以在程式中很好的使用。

/** 定義為傳輸操作提供資料所使用的類的介面* 專用於java.io.File類型*/package angel.datatransfer;import java.awt.datatransfer.*;import java.io.*;import angel.*;public class FileTransfer implements Transferable {private File file;public FileTransfer(File file){   this.file=file;}public Object getTransferData(DataFlavor flavor) {   if(isDataFlavorSupported(flavor))   {    return file;   }   else   {    return null;   }  }public DataFlavor[] getTransferDataFlavors(){   return new DataFlavor[] {           new DataFlavor(            file.getClass(),            DataFlavor.javaJVMLocalObjectMimeType)};}public boolean isDataFlavorSupported(DataFlavor flavor){   return flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType);} }//在點擊“複製”菜單是,調用:Transferable trans = new FileTransfer(this.getSelectedFile());    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);//返回Clipboard剪下板當前的資料public Object getClipboardData(){   try      {             Transferable tran=Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);             if(tran.isDataFlavorSupported(new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType)))       {        Object obj=tran.getTransferData(new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType));                    if(obj instanceof File)           {            return (File)obj;           }           else           {            return null;           }       }       else       {        return null;       }      }      catch(Exception err)      {             err.printStackTrace();       return null;      }}

另外還發現一個功能,在Java程式中還可以簡單的監視系統剪下板裡的內容變化,不過如果重複復制同一種類型的資料,比如複製了兩次不同內容的文本,只會觸發一次事件:

//開啟系統剪下板的接聽程式,接聽程式的目標Clipboard更改時調用      Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(this);//開啟系統剪下板的接聽程式,接聽程式的目標Clipboard更改時調用     public void flavorsChanged(FlavorEvent e)     {      try      {             Transferable tran=Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);       System.out.println(tran);            }      catch(Exception err)      {       err.printStackTrace();      }     }

 

在Java中調用與系統有關的剪下板Clipboard

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.