java怎么实现剪贴板功能

 我来答
匿名用户
2014-01-27
展开全部
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import javax.swing.*;

//剪贴板演示

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(); 
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
272138438
2014-01-27 · TA获得超过128个赞
知道答主
回答量:262
采纳率:0%
帮助的人:88.1万
展开全部
是自己写一个?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hyzmmmm
2014-01-27
知道答主
回答量:75
采纳率:0%
帮助的人:24.3万
展开全部
1楼的很详细了。同学习。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式