Реализует отмену / повтор в MVC
У меня есть приложение 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)
{
}
}
1 ответ
Просматривая пример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);
}