1、有一个专门的类,
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import javax.swing.*;
import java.io.IOException;public class ClipText{
public static void main(String args[]){
JFrame frame = new JFrame("Clip Text");
Container contentPane = frame.getContentPane();
final Clipboard clipboard= frame.getToolkit().getSystemClipboard();
final JTextArea jt = new JTextArea();
JScrollPane pane = new JScrollPane(jt);
contentPane.add(pane, BorderLayout.CENTER);
JButton copy = new JButton("Copy");
copy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String selection = jt.getSelectedText();
StringSelection data = new StringSelection(selection);
clipboard.setContents(data, data);
}
});
JButton paste = new JButton("Paste");
paste.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
Transferable clipData = clipboard.getContents(clipboard);
if (clipData != null){
try{
if (clipData.isDataFlavorSupported(DataFlavor.stringFlavor)){
String s = (String)(clipData.getTransferData(DataFlavor.stringFlavor));
jt.replaceSelection(s);
}
}catch (UnsupportedFlavorException ufe){
System.err.println("Unsupported flavor: " + ufe);
}catch (IOException ufe){
System.err.println("Unable to get data: " + ufe);
}
}
}
});
JPanel p = new JPanel();
p.add(copy);
p.add(paste);
contentPane.add(p, BorderLayout.SOUTH);
frame.setSize(300,300);
frame.show();
}
}
2、不知道,应该能

解决方案 »

  1.   

    再问一下,它是怎样从剪贴板里读取不同类型的数据的啊?像C里有GetClipboardData可以读取不同类型的数据一样??
      

  2.   

    如果你熟悉C的实现方法,你可以用JNI来实现呀
      

  3.   

    getToolkit().getSystemClipboard().setContents(new StringSelection("你要添加的内容"),
               new ClipboardOwner() {
              public void lostOwnership(Clipboard clipboard, Transferable contents) {}
            });