Java记事本代码撤销,java怎么实现记事本中的 撤销 功能

这个示例展示了一个基于Java的文本编辑器,它集成了撤销和重做功能。通过监听文档的UndoableEdit事件,每当发生可撤销的编辑操作时,都会将该编辑记录到UndoManager中。用户可以通过点击'Undo'和'Redo'按钮来执行相应的操作,按钮的状态会根据当前是否可以执行撤销或重做进行更新。
摘要由CSDN通过智能技术生成

Java codeimport java.awt.BorderLayout;

import java.awt.GridLayout;

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.event.UndoableEditListener;

import javax.swing.undo.CannotRedoException;

import javax.swing.undo.UndoManager;

public class UndoRedoTextArea extends JFrame {

protected JTextArea textArea = new JTextArea();

protected UndoManager undoManager = new UndoManager();

protected JButton undoButton = new JButton("Undo");

protected JButton redoButton = new JButton("Redo");

public UndoRedoTextArea() {

super("Undo/Redo Demo");

undoButton.setEnabled(false);

redoButton.setEnabled(false);

JPanel buttonPanel = new JPanel(new GridLayout());

buttonPanel.add(undoButton);

buttonPanel.add(redoButton);

JScrollPane scroller = new JScrollPane(textArea);

getContentPane().add(buttonPanel, BorderLayout.NORTH);

getContentPane().add(scroller, BorderLayout.CENTER);

textArea.getDocument().addUndoableEditListener(

new UndoableEditListener() {

public void undoableEditHappened(UndoableEditEvent e) {

undoManager.addEdit(e.getEdit());

updateButtons();

}

});

undoButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

undoManager.undo();

} catch (CannotRedoException cre) {

cre.printStackTrace();

}

updateButtons();

}

});

redoButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

undoManager.redo();

} catch (CannotRedoException cre) {

cre.printStackTrace();

}

updateButtons();

}

});

setSize(400, 300);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void updateButtons() {

undoButton.setText(undoManager.getUndoPresentationName());

redoButton.setText(undoManager.getRedoPresentationName());

undoButton.setEnabled(undoManager.canUndo());

redoButton.setEnabled(undoManager.canRedo());

}

public static void main(String argv[]) {

new UndoRedoTextArea();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值