[java]代码库
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://yuncode.net