我無法理解使用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 –