核心功能說明:
設置剪切板內容并指定所有者:clipboard.setContents();
當所有者為程序本身時才能監聽到剪切板的變動,每次系統執行復制或剪切動作時會自動的更改剪切板的所有者,所以每次監聽完成都要重新指定所有者才能保證不斷的進行監聽。
獲取剪切板的內容:clipboard.getContents(null)
指定剪切板所有者時必須指定剪切板的內容,每次設置時還是指定當前剪切板的內容,達到一個剪切板內容不變的效果。
package com
.test
.test
;import java
.awt
.Toolkit
;
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
.IOException
;public class ReadClipboard implements ClipboardOwner{private Clipboard clipboard
= Toolkit
.getDefaultToolkit().getSystemClipboard();public ReadClipboard(){clipboard
.setContents(clipboard
.getContents(null
), this);}public static void main(String
[] args
) throws InterruptedException
{ReadClipboard temp
= new ReadClipboard();Thread
.currentThread().sleep(1000000);}@Overridepublic void lostOwnership(Clipboard clipboard
, Transferable contents
) {try {Thread
.sleep(1000);} catch (InterruptedException e
) {e
.printStackTrace();}String text
= null
;if (clipboard
.isDataFlavorAvailable(DataFlavor
.stringFlavor
)){try {text
= (String
)clipboard
.getData(DataFlavor
.stringFlavor
);} catch (UnsupportedFlavorException e
) {e
.printStackTrace();} catch (IOException e
) {e
.printStackTrace();}}System
.out
.println(text
);clipboard
.setContents(clipboard
.getContents(null
), this);}
}
效果演示:
喜歡的點個贊?吧!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。