java简单实现复制 粘贴 剪切功能代码分享
废话不多说,直接上代码,小伙伴们仔细看下注释吧。
/*简单的复制剪切粘贴功能
操作:
复制测试:输入文本选择文本,点击复制,然后将光标放在右边的TextArea,点击粘贴
剪切测试:输入文本选择文本,然后将光标放在右边的TextArea,点击剪切
*/
importjavax.swing.*;
importjava.awt.*;
importjava.awt.datatransfer.*;
importjava.awt.event.*;
publicclassDemoimplementsActionListener
{
privateJFramejf;
privateJPanelp1,p2,p3; //上中下
privateJLabeltitle;
privateJTextAreaedit,showMsg;
privateJButtoncopy,paste,cut;
Clipboardclipboard;//获取系统剪贴板。
publicDemo()
{
this.init();
}
//界面初始化
publicvoidinit()
{
jf=newJFrame("复制粘贴");
p1=newJPanel(); //存放标题
p2=newJPanel(); //存放JTextAreashowMsg
p3=newJPanel(); //存放button
title=newJLabel("复制粘贴剪切演示");
edit=newJTextArea("请输入内容",15,25);
edit.setLineWrap(true);
showMsg=newJTextArea(15,25);
showMsg.setLineWrap(true);
showMsg.setEnabled(false);
copy=newJButton("复制");
paste=newJButton("粘贴");
cut=newJButton("剪切");
clipboard=jf.getToolkit().getSystemClipboard();
p1.setLayout(newFlowLayout());
p1.setSize(599,30);
p1.add(title);
p2.setLayout(newFlowLayout());
p2.setBackground(Color.gray);
p2.add(edit);
p2.add(showMsg);
p3.setLayout(newFlowLayout());
p3.add(copy);
p3.add(paste);
p3.add(cut);
//添加事件监听机制
copy.addActionListener(this);
paste.addActionListener(this);
cut.addActionListener(this);
//this.copyStr(copy);
jf.add(p1,BorderLayout.NORTH);
jf.add(p2,BorderLayout.CENTER);
jf.add(p3,BorderLayout.SOUTH);
jf.setLocation(400,200);
jf.setSize(600,450);
jf.setResizable(false);
jf.setVisible(true);
}
//事件处理
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==copy)
{
StringtempText=edit.getSelectedText(); //拖动鼠标选取文本
//创建能传输指定String的Transferable。
StringSelectioneditText=
newStringSelection(tempText);
/**
将剪贴板的当前内容设置到指定的transferable对象,
并将指定的剪贴板所有者作为新内容的所有者注册。
*/
clipboard.setContents(editText,null);
}elseif(e.getSource()==cut)
{
StringtempText=edit.getSelectedText();
StringSelectioneditText=
newStringSelection(tempText);
clipboard.setContents(editText,null);
intstart=edit.getSelectionStart();
intend =edit.getSelectionEnd();
showMsg.replaceRange("",start,end);//从Text1中删除被选取的文本。
}elseif(e.getSource()==paste)
{
Transferablecontents=clipboard.getContents(this);
DataFlavor flavor=DataFlavor.stringFlavor;
if(contents.isDataFlavorSupported(flavor))
{
try
{
Stringstr;
str=(String)contents.getTransferData(flavor);
showMsg.append(str);
}catch(Exceptionex)
{
ex.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args)
{
newDemo();
}
}
代码很简单,使用也很方便,小伙伴们有更好的思路的话,请一定要告诉我。