用JAVA实现撤消、重做、复制、粘贴、剪切
2024年03月11日
programlover原创作品包clipboard;
导入javax.swing.JTextArea;
导入java.awt.datatransfer.*;
导入java.awt.*;
导入javax.swing.*;
导入java.io.*;
导入javax.swing.undo.*;
导入javax.swing.text.*;
导入javax.swing.event.*;
导入java.awt.event.*;
/**
*标题:用JAVA实现Undo、Redo,Copy、Paste、Cut
*描述:用JAVA实现Undo、Redo,Copy、Paste、Cut
*版权所有:Copyright(c)2001
*公司:
* 作者:彭雄建
* version 1.0
*/
public class ClipTextArea extends JTextArea Implements ClipboardOwner{
Clipboard strBoard=this.getToolkit().getSystemClipboard();
UndoManager撤消=new UndoManager();
文档doc=getDocument();
公共ClipTextArea(){
doc.addUndoableEditListener(new UndoableEditListener(){
公共void undoableEditHappened(UndoableEditEvent e){
doc_addit(e);}
});
添加动作映射();
}
public void addActionMap()
{
getActionMap().put("Undo",new AbstractAction("Undo"){
public void actionPerformed(ActionEvent evt){
try{
if(undo.canUndo()){
undo.undo();}}
}
}catch(CannotUndoException e){
}
}
});
getInputMap().put(KeyStroke.getKeyStroke("控制Z"),"撤消");
getActionMap().put("Redo",new AbstractAction("Redo"){
public void actionPerformed(ActionEvent evt){
try
{
if(undo.canRedo()){
undo.redo();
}
}catch(CannotRedoException e){
}
}
});
getInputMap().put(KeyStroke.getKeyStroke("控制R"),"重做");
getActionMap().put("复制",new AbstractAction("复制"){
public void actionPerformed(ActionEvent evt){
copy();
}
});
getInputMap().put(KeyStroke.getKeyStroke("控制C"),"复制");
getActionMap().put("Cut",new AbstractAction("Cut"){
public void actionPerformed(ActionEvent evt){
cut();
}
});
getInputMap().put(KeyStroke.getKeyStroke("控制X"),"剪切");
getActionMap().put("粘贴",new AbstractAction("粘贴"){
public void actionPerformed(ActionEvent evt){
Paste();
}
});
getInputMap().put(KeyStroke.getKeyStroke("控制V"),“粘贴”);
}
公共无效复制()
{
字符串sCopy=getSelectedText();
if(sCopy!=null)
{
StringSelection sSelection=new StringSelection(sCopy);
strBoard.setContents(sSelection,this);
}
}
public void cut()
{
String sCopy=getSelectedText();
if(sCopy!=null)
{
StringSelection sSelection=new StringSelection(sCopy);
strBoard.setContents(sSelection,this);
this.replaceSelection("");
}
}
public void Paste()
{
Transferable sTransf=strBoard.getContents(this);
if(sTransf!=null)
{
try
{
String sPaste=(String)sTransf.getTransferData(DataFlavor.stringFlavor);
this.replaceRange(sPaste,getSelectionStart(),getSelectionEnd());
}
catch(UnsupportedFlavorException e)
{
}
catch(IOException ioe)
{
}
}
}
public void LostOwnership(Clipboard剪贴板,可传输内容)
{
}
void doc_addit(UndoableEditEvent e)
{
undo.addEdit(e.getEdit());
}
}