无法使用形状列表创建撤消/重做

时间:2018-03-02 17:36:11

标签: java stack undo redo

我正在开发一个非常基本的形状绘制GUI程序。我有一切工作(绘制/移动/选择),我现在正在处理重做/撤消功能。重做/撤消都可以用于绘制,但我遇到了移动问题,我认为应该非常简单。当我的形状移动时,它们会经历以下内容:

         for(IShape i : selectedList){
            undoStack.push(i);
            drawInstanceTwo.shapeList.remove(i);
            move.updateShape(i, start, end);
            drawInstanceTwo.shapeList.push(i, canvas, state);   
    }

这里的想法是它将形状当前形状(点x / y)推到undoStack上,这样如果我想撤消移动,我可以在按下撤销按钮时从堆栈中弹出它。 Move.updateShape更改形状的点,然后将其推到我的整体shapeList上以重新绘制GUI。我遇到的问题是稍后在我的撤销方法中我打电话:

priorShape = undoStack.pop();

它会在点变化后返回形状。为什么是这样?我已经把它推到堆栈中,因为它是在编辑点之前,所以为什么它在堆栈中发生变化?谢谢你的任何建议!

0 个答案:

没有答案