在JTextArea中实现Redo和Undo功能,jtextarearedo,在JTextArea中实
分享于 点击 41745 次 点评:87
在JTextArea中实现Redo和Undo功能,jtextarearedo,在JTextArea中实
在JTextArea中实现Redo和Undo功能,其实真正操控Undo、Redo功能的是Document、UndoManager,下面是实现代码:
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.event.UndoableEditEvent;import javax.swing.text.Document;import javax.swing.undo.UndoManager;/** * 在JTextArea中实现Redo和Undo功能 * @author 五斗米 <如转载请保留作者和出处> * @blog <a href="http://blog.csdn.net/mq612">http://blog.csdn.net/mq612 */public class Test extends JFrame { private static final long serialVersionUID = -2397593626990759111L; private JPanel pane = null; private JButton undo = null, redo = null; private JScrollPane sPane = null; private JTextArea text = null; private Document doc = null; private UndoManager undomang = null; public Test() { super("Redo and Undo"); undomang = new UndoManager(){ private static final long serialVersionUID = -5960092671497318496L; public void undoableEditHappened(UndoableEditEvent e) { this.addEdit(e.getEdit()); } }; text = new JTextArea(); doc = text.getDocument(); redo = new JButton(">>"); undo = new JButton("<<"); undo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (undomang.canUndo()) undomang.undo(); } }); redo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (undomang.canRedo()) undomang.redo(); } }); pane = new JPanel(); pane.add(undo); pane.add(redo); doc.addUndoableEditListener(undomang); sPane = new JScrollPane(text); this.getContentPane().add(sPane); this.getContentPane().add(pane, BorderLayout.NORTH); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 200); this.setVisible(true); } public static void main(String args[]) { new Test(); }}//该片段来自于http://byrx.net
用户点评