StringSelection ss=new StringSelection(“放入剪切板的文本”);
clipboardobj.setContents(ss,ss);//两个参数都是ss,因为StringSelection既是Transferable,也是ClipboardOwner.
DataFlavor表示的是存储数据的格式,因为我们的剪切板里到底是文本,图像,还是上次复制的文件我们根本不知道,幸好有它让我们可以先知道Clipboard里存的是些什么东西.
一个剪切板还可以加入数据改变的监听器,当剪切板的数据改变时做一些操作.这主要是在Clipboard里加入监听即可.
下面是一个复制文本到剪切板的程序段: import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
public class Clip{
public static void main(String[] args)
{
JFrame jf=new JFrame();
jf.setSize(400,400);
jf.setDefaultCloseOperation(3);
JTextArea jta=new JTextArea();
jf.getContentPane().add(jta); Clipboard cb=Toolkit.getDefaultToolkit().getSystemClipboard();
///存储到剪切板
StringSelection ss=new StringSelection(“哈哈哈哈哈哈”);
cb.setContents(ss, ss);
//从剪切板中取出
DataFlavor df=DataFlavor.stringFlavor;
Transferable tt=cb.getContents(df);
try {
System.out.println(tt.getTransferData(df));
} catch (UnsupportedFlavorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
jf.setVisible(true);
}
}
当然,剪切板里可以存入任何一个程序里运行的java类,序列化的类等.我们可以用这个好处在同时运行的java应用程序之间传递复制粘贴对象,像系列化类一样,不过只能在java应用程序里传递,在其它程序里就无法粘贴它们了.