日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java剪切板操作大全

發布時間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java剪切板操作大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自? ?Java剪切板操作大全

1. 概述

提起剪切板,一般都是在桌面系統或工具中使用。目前,操作Java剪切板有兩種形式,這也對應著兩種不同的技術Swing和JavaFX。 而剪切板有可以分為系統剪切板和自定義剪切板。顧名思義,系統剪切板可以在操作系統的范圍內通用,一般支持String文本類型和Image圖像類型。而自定義剪切板主要用于Java桌面應用程序內部的數據轉移。

2.?Swing的操作方式

2.1 String文本類型

2.1.1 設置 //獲取系統剪切板 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //設置字符串 String str = "測試設置String到剪切板"; //構建String數據類型 StringSelection selection = new StringSelection(str); //添加文本到系統剪切板 clipboard.setContents(selection, null); 2.1.2 獲取 Transferable content = clipboard.getContents(null);//從系統剪切板中獲取數據 if (content.isDataFlavorSupported(DataFlavor.stringFlavor)) {//判斷是否為文本類型String text = (String) content.getTransferData(DataFlavor.stringFlavor);//從數據中獲取文本值if (text == null) {return;}System.out.println(text); }

2.2 Image圖像類型

2.2.1 設置 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;} } 2.2.2 獲取 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; }

2.3 自定義剪切板

2.3.1 首先需要寫一個數據類 public class TestSelection implements Transferable, ClipboardOwner {public static final DataFlavor rangeFlavor = new DataFlavor(RangeDataModel.class, "Report Range");//class為自定義的java類 字串隨便private static final DataFlavor[] flavors = { rangeFlavor };private Object data;public TestSelection(Object data) {this.data = data;}@Overridepublic Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {if (flavor.equals(flavors[RANGE])) {return data;} else {throw new UnsupportedFlavorException(flavor);}}@Overridepublic DataFlavor[] getTransferDataFlavors() {return (DataFlavor[]) flavors.clone();}@Overridepublic boolean isDataFlavorSupported(DataFlavor flavor) {for (int i = 0; i < flavors.length; i++) {if (flavor.equals(flavors[i])) {return true;}}return false;}@Overridepublic void lostOwnership(Clipboard clipboard, Transferable contents) {// TODO Auto-generated method stub} } 2.3.2 設置 //創建自定義剪切板對象 Clipboard clipboard = new Clipboard("clipboardName"); //構建數據對象 data為數據類型java類的對象 ReportSelection content = new ReportSelection(data); clipboard.setContents(content, null); 2.3.3 獲取 //注意:自定義剪切板必須給null參數 Transferable content = clipboard.getContents(null); if (content.isDataFlavorSupported(ReportSelection.rangeFlavor)) {RangeDataModel data = (RangeDataModel) content.getTransferData(ReportSelection.rangeFlavor);System.out.println(data); }

3. JavaFX的操作方式

3.1 設置 Clipboard clipboard = Clipboard.getSystemClipboard(); ClipboardContent cc = new ClipboardContent(); cc.putString("測試使用JavaFX向系統剪切板放置數據"); clipboard.setContent(cc); 3.2 獲取 Clipboard clipboard = Clipboard.getSystemClipboard(); clipboard.getContent(DataFormat.PLAIN_TEXT); 至于JavaFX對其他類型的數據的剪切支持,DataFormat中定義了以下類型PLAIN_TEXT、HTML、RTF、URL、IMAGE、FILES,大家可以去嘗試

4.?注意

4.1 Swing操作方式的Clipboard類位于 java.awt.datatransfer包中,而JavaFX操作方式的Clipboard類位于javafx.scene.input包中。

4.2 如果你在你的Java桌面應用程序中同時使用了Swing和JavaFX技術,建議只使用一種剪切方法,且要保證在對應的事件線程上同步,否則可能會遇到剪切板鎖定無法訪問的問題。

5.?參考

本文參考了以下文章的內容

5.1?http://blog.csdn.net/shenzhennba/article/details/8213294

5.2?http://cuiweiqing1988.iteye.com/blog/947030


http://www.alanzeng.cn/2015/10/java-clipboard/


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java剪切板操作大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。