package cn.net.sunge.dsmsasserial.sw;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
//剪贴板演示
public class ClipboardDemo extends JFrame implements ClipboardOwner {
Clipboard clipboard; // 剪贴板
JTextArea jtaCopyTo = new JTextArea(5, 10); // 用于拷贝的文本框
JTextArea jtaPaste = new JTextArea(5, 10); // 用于粘贴的文本框
public ClipboardDemo() {
super("使用剪贴板的复制/粘贴程序"); // 调用父类构造函数
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 获得系统剪贴板
JButton btCopy = new JButton("拷贝"); // 拷贝按钮
JButton btPaste = new JButton("粘贴"); // 粘贴按钮
jtaCopyTo.setLineWrap(true); // 设置换行
jtaPaste.setLineWrap(true);
jtaCopyTo.setBorder(BorderFactory.createTitledBorder("复制到系统剪切板")); // 设置边界
jtaPaste.setBorder(BorderFactory.createTitledBorder("从系统剪切板粘贴"));
Container container = getContentPane(); // 得到容器
JToolBar toolBar = new JToolBar(); // 实例化工具栏
toolBar.add(btCopy); // 增加工具栏按钮
toolBar.add(btPaste);
btCopy.addActionListener(new CopyListener()); // 按钮事件处理
btPaste.addActionListener(new PasteListener());
Box box = new Box(BoxLayout.X_AXIS); // 实例化Box
box.add(jtaCopyTo); // 增加文本框到Box上
box.add(jtaPaste);
container.add(toolBar, BorderLayout.NORTH); // 增加工具栏到容器
container.add(box, BorderLayout.CENTER); // 增加Box到容器
setSize(320, 180); // 设置窗口尺寸
setVisible(true); // 设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
}
class CopyListener implements ActionListener { // 拷贝数据处理
public void actionPerformed(ActionEvent event) {
StringSelection contents = new StringSelection(jtaCopyTo.getText()); // 用拷贝文本框文本实例化StringSelection对象
clipboard.setContents(contents, ClipboardDemo.this); // 设置系统剪贴板内容
}
}
class PasteListener implements ActionListener { // 粘贴数据处理
public void actionPerformed(ActionEvent event) {
Transferable contents = clipboard.getContents(this); // 得到剪贴板内容
if (contents != null && contents.isDataFlavorSupported(DataFlavor.stringFlavor)) { // 判断内容是否为空,是否为字符串
try {
String string = (String) contents.getTransferData(DataFlavor.stringFlavor); // 转换内容到字符串
jtaPaste.append(string); // 插入字符串到粘贴文本框
} catch (Exception ex) {
ex.printStackTrace(); // 错误处理
}
}
}
}
public void lostOwnership(Clipboard clip, Transferable transferable) { // 实现ClipboardOwner接口中的方法
}
public static void main(String[] args) {
new ClipboardDemo();
}
}
使用剪贴板的复制/粘贴程序
最新推荐文章于 2021-07-15 10:46:45 发布