// System.out.println("kkk");
System.out.print((char)c);
}
child_in.close();
} catch (IOException e) {
System.err.println(e);
}
}
}
3。用Java实现剪贴板
在Java中实现剪贴板功能是使用java.awt.datatransfer.Clipboard类。该类就是实现了虚拟的剪贴板,它有想剪贴板内写内容,以及取出剪贴板上内容的方法,同时还指明这个剪贴板内存区域是属于哪个对象的。例如文本框之类的部件。
接口Transferable主要是为传输操作提供数据。
真正的数据内容是由java.awt.datatransfer.DataFlavor类来表示的。它可以表示plain text和Java Unicode String class两种不同数据的格式。
下面的程序例子就是一个完整的剪贴板。
import java.awt.*;
import java.io.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
class Main extends Frame implements ActionListener, ClipboardOwner {
TextArea textArea = new TextArea();
Main() {
super("Clipboard Example");
MenuBar mb = new MenuBar();
Menu m = new Menu("Edit");
setLayout(new BorderLayout());
add("Center", textArea);
// Prepare menu and menubar.
m.add("Cut");
m.add("Copy");
m.add("Paste");
m.add("Exit");
mb.add(m);
setMenuBar(mb);
// Listen to events from the menu items.
for (int i=0; i < m.getItemCount(); i++) {
m.getItem(i).addActionListener(this);
}
setSize(300, 300);
show();
}
public void actionPerformed(ActionEvent evt) {
if ("Paste".equals(evt.getActionCommand())) {
boolean error = true;
Transferable t =
getToolkit().getSystemClipboard().getContents(this);
try {
if (t != null
&& t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
textArea.setBackground(Color.white);
textArea.setForeground(Color.black);
textArea.replaceRange(
(String)t.getTransferData(DataFlavor.stringFlavor),
textArea.getSelectionStart(),
textArea.getSelectionEnd(