容易忽视的Java三用法小议(二)

2014-11-23 20:27:43 · 作者: · 浏览: 20
((c = child_in.read()) != -1) {
// 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");

// Add text area.
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(