Реализует отмену / повтор в 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);
    }
Другие вопросы по тегам