我无法理解使用UndoManager的撤销/重做功能,并将其与MVC模型集成在一起。如何在Java中为MVC模型实现撤销/重做?
我不知道在哪里把各种方法(在模型,视图或控制) ,我仍然不知道如何使用撤消管理器。
我的控制类实现UndoableEditListener该 它创建:
private UndoManager manager = new UndoManager();
和:
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Undo")) {
try {
manager.undo();
} catch (CannotUndoException ex) {
ex.printStackTrace();
}
}
}
我明白了这里,但其余的我不知道该怎么做。我知道我将不得不在模型和视图类中添加更多,但不知道在哪里。 我必须拥有以下课程吗?
public class UndoAction extends AbstractAction {}
public void undoableEditHappened(UndoableEditEvent e) {
我只是把一个文本框一个整数,然后我希望能够撤消this.I设置在视图class.I文本字段数量都想达致这可能是最简单的方法,没有花哨的编码!这是我assg的一小部分,但我不能让它工作!
============================================== ============ 下面是我的代码的更详细的描述,也许它会帮助:我有一个模型,视图和控制包。
控逆变具有: ButtonGUIControl.java,它实现既
ActionListener and
UndoableEditListener.
final UndoManager manager = new UndoManager();
在actionPerformed方法,它调用
if (e.getActionCommand().equals("Undo")){
try {
manager.undo();
}
和在:
public void undoableEditHappened(UndoableEditEvent evt) {
manager.addEdit(evt.getEdit());
}
在查看: Grid.java,它扩展了JTextField将新增如下,无论它需要在GUI上显示一个数字:(模型只是我的模型类的实例)
getDocument().addUndoableEditListener(new ButtonGUIControl(model));
莫非是因为UndoManager是在不同的包中创建的?我真的不知道如何调试这个了!
如果有帮助,我可以发布我的整个代码。我想我不知道如何将这与我的mvc模型结构集成。
这可能会有帮助http://www.java-tips.org/java-se-tips/javax.swing.undo/how-to-add-undo-和-reoo-to-a-text-comp.html –