2019独角兽企业重金招聘Python工程师标准>>>
package jishiben;
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 = this.getDocument();
public ClipTextArea() {
doc.addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent e) {
doc_addedit(e);
}
});
addActionMap();
}
public void addActionMap() {
getActionMap().put("Undo_Key", new AbstractAction("Undo") {
public void actionPerformed(ActionEvent evt) {
try {
if (undo.canUndo()) {
undo.undo();
}
} catch (CannotUndoException e) {
}
}
});
getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo_Key");
/* void put(Object key, Action action)
添加一个 key 到 action 的绑定。 */
/*void put(KeyStroke keyStroke, Object actionMapKey)
将 keyStroke 的一个绑定添加到 actionMapKey。 */
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());
}
}