⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用java实现undo、redo,copy、paste、cut.txt

📁 含有许多JAVA的技巧!
💻 TXT
字号:
用JAVA实现Undo、Redo,Copy、Paste、Cut 
(加入日期:2002-2-9 点击数:1855)
【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】 【打印文章】 
 
programlover原作 

package clipborad; 

import javax.swing.JTextArea; 
import java.awt.datatransfer.*; 
import java.awt.*; 
import javax.swing.*; 
import java.io.*; 
import javax.swing.undo.*; 
import javax.swing.text.*; 
import javax.swing.event.*; 
import java.awt.event.*; 
/** 
* Title: 用JAVA实现Undo、Redo,Copy、Paste、Cut 
* Description:用JAVA实现Undo、Redo,Copy、Paste、Cut 
* Copyright: Copyright (c) 2001 
* Company: 
* @author: 彭建雄 
* @version 1.0 
*/ 

public class ClipTextArea extends JTextArea implements ClipboardOwner{ 

Clipboard strBoard = this.getToolkit().getSystemClipboard(); 
UndoManager undo = new UndoManager(); 
Document doc = getDocument(); 



public ClipTextArea() { 
doc.addUndoableEditListener(new UndoableEditListener(){ 
public void undoableEditHappened(UndoableEditEvent e) { 
doc_addedit(e);} 
}); 

addActionMap(); 
} 

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("control Z"), "Undo"); 

getActionMap().put("Redo",new AbstractAction("Redo") { 
public void actionPerformed(ActionEvent evt) { 
try 
{ 
if (undo.canRedo()) { 
undo.redo(); 
} 
} catch (CannotRedoException e) { 
} 
} 
}); 
getInputMap().put(KeyStroke.getKeyStroke("control R"), "Redo"); 

getActionMap().put("Copy",new AbstractAction("Copy") { 
public void actionPerformed(ActionEvent evt) { 
copy(); 
} 
}); 
getInputMap().put(KeyStroke.getKeyStroke("control C"), "Copy"); 

getActionMap().put("Cut",new AbstractAction("Cut") { 
public void actionPerformed(ActionEvent evt) { 
cut(); 
} 
}); 
getInputMap().put(KeyStroke.getKeyStroke("control X"), "Cut"); 

getActionMap().put("Paste",new AbstractAction("Paste") { 
public void actionPerformed(ActionEvent evt) { 
paste(); 
} 
}); 
getInputMap().put(KeyStroke.getKeyStroke("control V"), "Paste"); 

} 


public void copy() 
{ 
String 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 clipboard,Transferable contents) 
{ 

} 

void doc_addedit(UndoableEditEvent e) 
{ 
undo.addEdit(e.getEdit()); 
} 

} 

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -