ActionListeners, множественные обновления полей и перезагрузка пользовательских настроек GUI из файла

У меня есть несколько мест, где я конвертирую между одной системой координат и другой. В каждом случае между косинусом / синусом есть вычисление, назовем их x, y и x', y'. Это все JFormattedTextFields.

Если пользователь вводит значение в любой из 4, вызывается ActionListener. Позволяет вызывать поля fieldx, fieldy, fieldx1 и fieldy1. Если пользователь вводит что-либо в fieldx или fieldy, у меня есть HAD-клавиатура и слушатели фокуса (одинаковые для всех четырех полей), которые обновляют fieldx1 и fieldy1 из текущих значений в fieldx и fieldy. Если бы вызов слушателя был из fieldx1 или fieldy1, он вычислил бы fieldx и fieldy.

Затем я решил сохранить выбранные поля (в том числе несколько флажков вкл / выкл и некоторые значения счетчиков) в файле конфигурации (новое требование после разработки). Я думал, что, устанавливая значения и состояния, все будет хорошо, НО определенные вещи не происходят (за кадром). Я решил, что отчасти это происходит из-за того, что триггерные методы при различных проверках, вводе и т. Д. Не выполняются, потому что поля не запускают слушателей клавиатуры и фокуса, когда они были заданы фрагментом кода.

После чтения в Интернете я изменил весь KeyboardAdapter на ActionListener, и после того, как я установил значение, я вызываю postActionEvent() в полях, которые я упомянул выше, и теперь все фоновые вещи происходят (хотя порядок является проблемой, и я собираюсь сохранить дополнительную информацию о состояние, чтобы обновить это должным образом). Я сделал это изменение, потому что я думал, что будет более трудно запустить так много поддельных событий клавиатуры?

Вероятно, есть более умные / умные способы сделать это, но сейчас я стараюсь не трогать слишком много кода.

  1. У кого-нибудь есть предложения о том, как сохранить состояние панели и обновить ее (текущий объект, панель)?

  2. Если я продолжу делать это таким образом, может кто-нибудь предложить способ минимизировать время срабатывания ActionListener? Кажется, что стрелять так часто, это смешно!

Должен ли я вместо этого делать то, что предложено здесь?

Должен ли ваш класс реализовать ActionListener или использовать объект анонимного класса ActionListener

Кажется, что здесь задействовано гораздо больше кода, но гораздо точнее, что происходит, когда...

Если этот вопрос / обсуждение здесь неуместны, просто дайте мне знать:). Просто набрав эту страницу, я подумал о том, что нужно почитать и попробовать.

1 ответ

Решение

Я стараюсь не трогать слишком много кода.

Это основополагающая ошибка; мусорная корзина является важным инструментом проектирования, и один или несколько минимальных примеров будут иметь неоценимое значение при обучении составлению более сложных приложений.

У кого-нибудь есть предложения о том, как сохранить состояние панели и обновить ее (текущий объект, панель)?

Используя шаблон Модель-Вид-Контроллер, данные программы должны храниться в подходящей модели, и преобразования должны выполняться, когда элементы модели отображаются в представлении; Converter пример показывает, как управлять пользовательскими событиями, и этот пример раскрывает тему

Если я продолжу делать это таким образом, может кто-нибудь предложить способ минимизировать время срабатывания ActionListener?

Как предлагается в оригинальной статье, используйте Action инкапсулировать поведение. См. Дизайн приложений Java SE с MVC: Проблемы с дизайном приложений для более глубокого изучения проблемы.

Другие вопросы по тегам