gpt4 book ai didi

java - 在 MVC 中实现撤消/重做

转载 作者:行者123 更新时间:2023-12-01 16:04:33 25 4
gpt4 key购买 nike

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

我的类(class)Model实现接口(interface) 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)
{

}
}

最佳答案

从查看example of StateEditable ,看来在您的 storeState 方法中,您需要填充传入的 Hashtable 。同样,您在 restoreState 中分配状态来自传入的 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);
}

关于java - 在 MVC 中实现撤消/重做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com