实现文本的复制和粘贴、文本的撤销和恢复(Swing JTextArea)

来源:互联网 发布:我知这世界 编辑:程序博客网 时间:2024/05/27 20:52

                    实现文本的复制和粘贴、文本的撤销和恢复(Swing  JTextArea)

文本的撤销和恢复是通过 addUndoableEditListener(UndoableEditListener listener)这个方法来注册实现的。只要是Document类及其子类都可以注册撤销和恢复的监听来实现文档的撤销和恢复,这是非常容易实现的。所以JTextComponent类以及其子类,JTextField,JTextArea,JTextPane都可以实现撤销和恢复功能。因为他们都可以获得Document实例,通过这个方法----getDocument();

UndoManager 管理 UndoableEdit 列表,提供撤消或恢复适当编辑的方法。有两个方法可以将编辑添加到 UndoManager。直接使用 addEdit 方法添加编辑,或将 UndoManager 添加到支持 UndoableEditListener 的 bean[实体]。下面的例子创建了一个 UndoManager 并将它作为 UndoableEditListener 添加到 JTextField

   UndoManager undoManager = new UndoManager();   JTextField tf = ...;   tf.getDocument().addUndoableEditListener(undoManager);//给文本[行、区]添加---可撤销监听;当执行撤销操作时,则调用undoManager的undo() 之所以要写getDocument()是因为注册侦听器的对象是文本,不是文本框。addUndoableEditListener(undoManager)的作用是为tf的文本注册侦听器或者tf.getDocument().addUndoableEditListener(newUndoableEditListener(){    //注册撤销可编辑监听器         public void undoableEditHappened(UndoableEditEvent e) {                undoManager.addEdit(e.getEdit());          }    });     ......以上2种方式:是作用于文本text,设置文本为“可撤销编辑”[文本text可以是JTextField,JTextArea,JTextPane]...........................................................................................................  
       tf.addActionListener(new ActionListener() {//撤销 编辑---
            
            @Override
            public void actionPerformed(ActionEvent arg0) {

                     if(undomg.canUndo()) { //撤销   

              undoManager.undo();

                     }
                    if(undomg.canRedo()) { //恢复

                           undoManager.redo();

                     }

            }
        });

其实对于文档编辑的撤销和恢复是非常简单的,只要获取getDocument()就可以实现监听了,在监听方法中添加编辑数据就可以了,

UndoManager .addUndoableEditListener(UndoableEditEvent.getEdit());

在就是在撤销操作中调用UndoManager .undo()就可以了,还有canUndo()这个方法和重要,用于判断undo操作是否成功,如果成功就返回true。

在恢复操作中调用UndoManager .redo()可以实现恢复,还有canRedo()方法判断redo操作是否成功,如果成功返回true。

实现文本的复制和粘贴

只要是JTextComponent类以及其子类都具备文本的复制和粘贴功能。是使用了下面的三个方法。

copy():复制方法,可以通过鼠标来选定文本来复制。通过复制到的数据是放到剪贴板上的,和操作系统相互应的。也就是说通过复制操作系统也可以使用这个剪贴板中的数据。

cut():剪切

paste():粘贴

还有一个有用的方法:

getSelectedText():返回选择的内容,如果用户没有选中任何内容或者文档中没有一个内容就返回null,如果有就返回String



1 0
原创粉丝点击