我有一个Java应用程序,我想实现一个Undo / Redo选项。我想要存储的值以及我希望能够恢复的值是一个整数。
我的班级Model
实现了界面StateEditable
,我必须重新定义2个函数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)
{
}
}
答案 0 :(得分:1)
通过查看example of StateEditable
,您的storeState
方法似乎需要填充传入的Hashtable
。同样,您在{restoreState
中分配状态1}}来自传入的Hashtable
。您需要为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);
}