Java应用技巧——文本撤销、恢复功能的实现
作文本编辑器的时候,撤销(undo)、恢复(redo)是必不可少的两个功能。实现这个功能,要用到javax.swing.undo包中的UndoManager类。
UndoManager类有如下常用方法:
boolean canUndo() ——判断能否进行撤消操作,可以则返回true。
boolean canRedo() ——判断能否进行恢复操作,可以则返回true。
void Undo() ——进行撤消操作。
void Redo() ——进行恢复操作。
但是,进行撤销、恢复操作前还应为撤销、恢复的对象注册侦听器。在文本编辑器中,对象就是文本。例如先声明两个对象:
JTextArea text = new JTextArea();
UndoManager undomg = new UndoManager();
接下来,为text添加侦听器:
text.getDocument().addUndoableEditListener(undomg);
这里要说名一下,之所以要写getDocument()是因为注册侦听器的对象是文本,不是文本框。addUndoableEditListener(undomg)的作用是为text的文本注册侦听器,该方法的原型是:
void addUndoableEditListener(UndoableEditListener listener)
可以看出,该方法的参数应是一个UndoableEditListener接口类型的参数,而我们用的参数是UndoManager类型,这是因为UndoManager类已经实现了UndoableEditListener接口的缘故。
现在就可以进行撤销、恢复操作了。方法是:
undomg.Undo(); //撤销
undomg.Redo(); //恢复
但是这样不算完美,因为如果无法撤销或恢复,这两个语句就不会起任何作用。因此我们改用如下方法:
if(undomg.canUndo()) { //撤销
undomg.Undo();
}
if(undomg.canRedo()) { //恢复
undomg.Redo();
}
这样一来,文本编辑器的撤销、恢复功能很容易地就实现了。以下是一个例子:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.undo.*;
class UndoDemo extends JFrame {
static JTextArea text = new JTextArea();
static JPanel pnl = new JPanel();
static JButton unbtn = new JButton("撤销");
static JButton rebtn = new JButton("恢复");
static UndoManager undomg = new UndoManager();
UndoDemo() {
super("撤销、恢复功能实例");
setVisible(true);
setSize(400,300);
s
相关文档:
数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量
数组中的元素可以是任何数据类型,包括基本类型和引用类型
记住数组首先分配空间再赋值!
动态初始化:就是先分配空间再赋初值;
静态初始化:定义数组同时就为数组元素分配空间并赋值。
1一维数组的声明
一维数组的声明:type va ......
Java EE 6现在已经正式发布。在Sun的官方网站上,有一系列文章对Java EE 6的技术标准进行了详细的介绍。今天这篇介绍Java EE 6的主要目标。
Java平台企业版本(Java EE)是构建Java企业级应用系统的行业标准,它以坚实的Java平台标准版(Java SE)为基础,添加了支持可扩展性、可访问性、安全性、完整性和其它企业级应用需要的 ......
==操作符与equals方法的区别:
==是引用类型比较引用(也就是比较内容和地址);基本类型比较值;
equals()方法只能比较引用类型,"=="可以比较引用类型及基本类型;
特例:当用equals()方法进行比较时,对类File、String、Date及封装类(Wrapper包装 ......
private String smtpHost;
private String smtpUserName;
private String smtpPassword;
public void sendEmail(String fromAddress, List<String> toAddresses, List<String> ccAddresses,
String subject, String message) {
Properties props = new Properties();
props.put("mail.smtp.host", smt ......