功能性质网站,莆田百度推广开户,微信做淘宝优惠券但网站是怎么建设但,响应式框架转载自 Java剪切板操作大全1. 概述提起剪切板#xff0c;一般都是在桌面系统或工具中使用。目前#xff0c;操作Java剪切板有两种形式#xff0c;这也对应着两种不同的技术Swing和JavaFX。而剪切板有可以分为系统剪切板和自定义剪切板。顾名思义#xff0c;系统剪切板可以…转载自 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/947030http://www.alanzeng.cn/2015/10/java-clipboard/