用JAVA实现Undo、Redo,Copy、Paste、Cut
2008-01-05 09:50:03 来源:WEB开发网核心提示:package clipborad;import javax.swing.JTextArea;import java.awt.datatransfer.*;import java.awt.*;import javax.swing.*;import java.io.*;import javax.swing.undo.*;
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());
}
}
[]
- ››JavaScript拖拽原理的实现
- ››javascript事件列表解说
- ››Javascript代码优化工具UglifyJS
- ››Java Bean属性值动态设置
- ››JavaScript Confirm 失效的解决办法
- ››JavaScript页面内拖拽原理分析
- ››javascript中select的常用操作
- ››javascript+css无刷新实现页面样式的更换
- ››Java Web Services:不使用客户端证书的WS-Securit...
- ››Java开发2.0: 使用Amazon SimpleDB实现云存储,第...
- ››Java异常处理及其应用
- ››Java中遍历大容量map的正确方法
更多精彩
赞助商链接