ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中的撤消和重做操作事件

2019-11-05 18:03:47  阅读:442  来源: 互联网

标签:redo undo java


我有一个带有JPanel和按钮的应用程序,用户可以单击这些按钮在面板上绘制形状.您可以为形状着色和调整大小,以及在面板中四处移动.我将如何为此类应用程序实现撤消和重做?我有一个Actions类,其中实际执行了所有操作.在此类中,每个动作都是其自己的扩展AbstractAction的类.我的Actions类基本上是一个嵌套类.

例如,这是我的Actions类中的类之一:

private class RandomAction extends AbstractAction {
  private static final long serialVersionUID = 1L;
  public NewAction(String text, ImageIcon icon, String desc){
            super(text, icon);
            putValue(SHORT_DESCRIPTION, desc);
        }
        public void actionPerformed(ActionEvent e) {

        }
    }

当我创建一个按钮时,我要做的就是:

 randButton = new JButton(Actions.RandomAction);

解决方法:

通常,撤消/重做功能是通过实现堆栈来完成的.您可以实现自己的操作堆栈,以跟踪先前的X动作,然后您可以在用户每次撤消操作时弹出该堆栈.您可能还需要为重做功能保留类似的结构类型.因此,当一个操作从撤消堆栈中弹出时,它首先需要进入重做堆栈.

如果您使用的是Java和NetBeans(虽然严格来说不需要使用NetBeans IDE),则可以查看NetBeans平台(可以单独下载).我对撤消/重做的工作还不多,但是它确实提供了功能.

就我个人而言,我只想编写一个包装用户可以执行的任何“操作”的类,我看您已经完成了.现在只需要实现一个堆栈来跟踪这些操作,而当一个操作从撤消堆栈中弹出时,您需要执行该操作的“相反”操作.将项目放置在重做堆栈上,因此当用户单击重做时,您可以简单地将操作从重做堆栈上弹出,然后让您的应用程序像往常一样处理它.

标签:redo,undo,java
来源: https://codeday.me/bug/20191105/1996770.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有