2015-05-27 4 views
0

У меня есть форма с некоторыми флажками и прядильщиками. Все они имеют ActionListeners \ ChangeListeners, назначенные им, поэтому каждый раз, когда вы меняете какой-то элемент, программа запускает метод create(), который собирает все значения из всей формы и помещает их в объект, который можно сохранить на диск позже.Обновление элементов формы с помощью ActionListener из загруженных объектов

Но теперь я пытаюсь заставить программу загрузить этот объект из файла и обновить интерфейс в соответствии с тем, что было загружено. Здесь возникают проблемы. После того, как программа загрузила объект, она пытается обновить элементы формы, но так же, как она меняет первый, запускается ActionListener и собирает все значения из формы и перезаписывает ранее загруженный объект.

Что было бы хорошим способом решить эту проблему?

Сейчас я собираюсь создать глобальную переменную, чтобы «отключить» метод create() при загрузке объекта (то есть создать флаг, который останавливает прослушиватели действий). Но я не уверен, что это хорошая идея.

+0

Что вы подразумеваете под _loading_ objects? [Как я могу спросить] (http://stackoverflow.com/help/mcve) –

+0

Добавить флаг, который либо останавливает выполнение ActionListener'ами своих задач, либо содержимое, записанное в файл. Установите этот флаг перед загрузкой содержимого. – MadProgrammer

+0

Загрузка объектов означает сериализацию в моем случае с помощью ObjectInputStream. – Zmur

ответ

0

Вместо флага, возможно, подумайте о создании перечисления, называемого FormState, для представления состояний формы, например. ЧИТАТЬ и ИЗМЕНИТЬ. Вы можете переключать состояние формы до и после сохранения значений.

+0

Интересно, спасибо. Я это рассмотрю. – Zmur

0

Решил его, добавив частную логическую переменную, которая изменена на false при обновлении интерфейса.