在Java中操控剪切板数据- -

转载 2006年06月15日 13:20:00

通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用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;
 }

}

pAdPt_-9 活动的生命周期[LogCat java关键字] 传递数据[Intent 静态变量 全局变量 剪切板]

2015.11.13-11.17平台。 Windows 10 Android Studio 1.3.2 看“Android.老罗”的笔记以为Android开发入门的好瓜笔记,笔记保存地址:Dat...

如何在Java程序中读写系统剪切板的数据

Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,本地剪切板使用 Clipborad cp = new Clipboard...

【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式

【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式 本文将输出剪贴板上的数据地址,数据大小,对文本类型的数据如何直接输出。...

c#在最小化为托盘时,无法监听剪切板(clipboard)复制数据时候的变化

在做C#开发中,有一个需求是写一个托盘程序用于监听剪贴板的数据复制。 我遇到的问题是在正常情况下可以监听clipboard的数据变化,但是当我缩小为托盘程序的时候,托盘程序就无法监听剪贴板的数据变化了...

安卓学习笔记(二)、使用剪切板传递数据

1、 public class MainActivity extends Activity { private Button button; @Override protected ...

(转)Android剪切板传递数据的使用

原地址:http://blog.csdn.net/u010932017/article/details/50978907 在Activity之间传递数据还可以利用一些技巧,不管windows...
  • duyiqun
  • duyiqun
  • 2017年04月12日 11:49
  • 241

Android 用剪切板传递数据

在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取...

Android剪切板传递数据的使用

在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取...

Android使用剪切板传递数据

MainAcitivity.java package com.example; import android.os.Build; import android.os.Bundle; import ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Java中操控剪切板数据- -
举报原因:
原因补充:

(最多只允许输入30个字)