易截截图软件、单文件、免安装、纯绿色、仅160KB

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


相关文档:

Java NIO API详解

 
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......

java使用rocksaw和vserv tcpip实现基于ICMP的Ping功能

一:准备 www.savarese.org download
 1.  rocksaw-1.0.0-src.tar.gz
 2.  vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
 1.  build vserv-tcpip-0.9.2-src
      在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......

JSF获得URL参数(@JAVA)

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        String parameterValue = request.g ......

Java多线程

多线程
线程:是指进程中的一个执行流程。
线程与进程的区别:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源。
如何创建一个线程?
创建线程有两种方式,如下:
1、 扩展java.lang.Thread类
2、 实现Runnable接口 ......

java经典书籍

java经典书籍汇总(部分)
一、入门 
《Java 2从入门到精通》- 推荐 
《Thinking in Java》- 强烈推荐* 
O’reilly的Java编程基础系列 - 参考* 
二、进阶 
《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号