0

我有一个 Java 应用程序,我想实现一个撤消/重做选项。我想要存储并且我想要能够恢复的值是一个整数。

我的类Model实现了接口StateEditable,我必须重新定义这两个函数restoreState(Hashtable<?, ?> state)storeState(Hashtable<Object, Object> state)但我不知道该放什么。如果有人可以帮助我做到这一点,那就太好了。这些是我Model班级的第一行,我想要对其进行撤消/重做的值是value

public class Model extends Observable implements StateEditable
{
        private int value = 5;

        private UndoManager undoRedo = new UndoManager();

        final UndoableEditListener editListener = new UndoableEditListener() {
        public void undoableEditHappened(UndoableEditEvent evt) {
            undoRedo.addEdit(evt.getEdit());
            }
        };

        @Override
        public void restoreState(Hashtable<?, ?> state)
        {

        }

        @Override
        public void storeState(Hashtable<Object, Object> state)
        {

        }
}
4

1 回答 1

1

通过查看 的示例StateEditable,似乎在您的storeState方法中,您需要填充Hashtable传入的那个。类似地,您restoreStateHashtable传入的那个中分配状态。您需要为 in 中的值定义一个键Hashtable. _ 考虑到这一点,我建议您添加

private final String KEY = "myKey";

到文件的顶部,然后像这样填写两个方法:

    @Override
    public void restoreState(Hashtable<?, ?> state) 
    {
       Object val = state.get(KEY);
       if( val instanceof Integer ) //performs the null test for us.
       {
          value = val;
       }
    }

    @Override
    public void storeState(Hashtable<Object, Object> state) 
    {
        state.put(KEY, value);
    }
于 2010-05-25T13:14:03.680 回答