В Swing Gui каждый компонент ссылается по своей собственной модели данных на отображение данных. Хотя они не относятся к общей модели, иногда компоненты могут быть «зависимыми» друг от друга из-за семантики программы.Шаблон для зависимости между компонентами gui
Например: если у Gui есть JToggleButton, который отображает/скрывает таблицу и другой JButton, , чей actionListener подсчитывает строки в этой таблице, последний должен быть отключен, если первый не выбран (и таблица не отображается). Действительно - предположим, что подсчет строк не видимой таблицы может привести к несогласованному состоянию. Скажем, например, что , когда таблица скрыта, actionListener JButton вызывает метод для переменной, которая установлена в значение null.
Я знаю, что это очень тривиальный пример. Но со мной часто случалось так, что мне приходилось относиться ко всем этим зависимостям между компонентами. И мне пришлось отключить некоторые компоненты, чтобы пользователь не мог довести программу до несогласованного состояния, нажав на неправильную кнопку в неподходящее время.
Поэтому я начал задаваться вопросом, существует ли более организованный и стандартный способ решения этой проблемы, чем просто прокручивать код и помещать некоторый setEnable (false), здесь и там, где я замечаю, что существует зависимость.
Как мне кажется, может возникнуть необходимость иметь матрицу зависимостей логических значений: по одной строке для каждого возможного состояния интерфейса и по одному столбцу для каждого компонента интерфейса. матрица [я] [J] будет верно если в состоянии я компонент J должен быть отключен. и false в противном случае.
Что вы думаете об этом? Есть ли какой-либо шаблон дизайна для решения этой проблемы?
веселит
Я обычно использую шину событий для этих проблем. Они допускают слабосвязанный код - участвующие стороны не должны знать друг о друге, а сами события. Я использовал тот, который предлагает Google Guava, а также MBassador. Я бы сказал, что массивную матрицу 'boolean' лучше избегать. –