?? mytextarea.java
字號:
package com.thb.mytool;
/**
* <p>Title: DBMS</p>
* <p>Description: This is a database manager system</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: UPC</p>
* @author THB
* @version 1.0
*/
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.text.*;
import javax.swing.undo.*;
import javax.swing.event.*;
import java.awt.datatransfer.*;
public class MyTextArea extends JTextArea
implements ClipboardOwner {
private UndoableEdit edit;
private Document document;
private Clipboard clipBoard;
private UndoManager undoManager;
/**
* 當用戶在Text Area中有所操作時,就可以用getEdit()方法取得UndoableEdit對象,
* 此對象紀錄著剛剛用戶的操作,因此可由些對象的undo()或redo()達到取消或復原的功能.
*/
public MyTextArea() {
document = getDocument();
undoManager = new UndoManager();
clipBoard = this.getToolkit().getSystemClipboard();
document.addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent e) {
edit = e.getEdit();
undoManager.addEdit(edit);
}
});
}
public void addActionMap() {
getActionMap().put("Undo", new AbstractAction("Undo") {
public void actionPerformed(ActionEvent evt) {
try {
if (undoManager.canUndo()) {
undoManager.undo();
}
}
catch (CannotUndoException e) {
}
}
});
getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
getActionMap().put("Redo", new AbstractAction("Redo") {
public void actionPerformed(ActionEvent evt) {
try {
if (undoManager.canRedo()) {
undoManager.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 copy = getSelectedText();
if (copy != null) {
StringSelection str = new StringSelection(copy);
clipBoard.setContents(str, this);
}
}
public void cut() {
String copy = getSelectedText();
if (copy != null) {
StringSelection str = new StringSelection(copy);
clipBoard.setContents(str, this);
replaceSelection("");
}
}
public void paste() {
Transferable transfer = clipBoard.getContents(this);
if (transfer != null) {
try {
String str = (String)transfer.getTransferData(DataFlavor.stringFlavor);
this.replaceRange(str, getSelectionStart(), getSelectionEnd());
}
catch(UnsupportedFlavorException e) {
}
catch(IOException e) {
}
}
}
public void lostOwnership(Clipboard clipboard, Transferable contents) {
}
public UndoableEdit getEdit() {
return edit;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -