Тимур Машнин

Графические интерфейсы пользователя Java


Скачать книгу

списка.

      Так же, как и в раскрывающийся список JComboBox, в список JList можно добавлять не только текст, но и изображения.

      По умолчанию в списке можно выбрать любое число любых элементов, держа нажатой клавишу <Ctrl>.

      После применения метода setSelectionMode с константой SINGLE_SELECTION, в списке можно будет выбрать только один элемент.

      Также, как и для раскрывающегося списка JComboBox, для списка JList, можно определить пользовательский объект ListCellRenderer, и отображать в списке любые компоненты, а не только строки и изображения.

      Список генерирует события выбора списка при каждом изменении выбора.

      Вы можете обработать эти события, добавив в список слушатель с помощью метода addListSelectionListener.

      Слушатель выбора списка должен реализовать один метод valueChanged.

      Метод getValueIsAdjusting возвращает true, если пользователь все еще выбирает в списке.

      Так как нам нужен только конечный результат действия пользователя, метод valueChanged делает что-либо, только если getValueIsAdjusting возвращает false.

      В этом примере описан случай, когда список допускает множественный выбор, поэтому метод valueChanged обрабатывает массив индексов выбранных пользователем элементов списка.

      Архитектура Model-View-Controller

      Теперь, когда мы уже рассмотрели ряд Swing компонентов, давайте вернемся к архитектуре model-view-controller (MVC).

      MVC – это общий подход к построению графических приложений.

      Суть идеи заключается в том, чтобы низлежащие данные, отображение и логика, которая контролирует данные и отображение, должны быть развязаны.

      Эта идея исходит из того, что мы хотели бы иметь более одного способа посмотреть на одни и те же данные.

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

      Еще один пример из реляционных баз данных.

      Там мы можем запускать разные запросы для выбора и упорядочивание данных, но низлежащие данные всегда одинаковы.

      Поэтому архитектура MVC предлагает нам строить графические интерфейсы с помощью моделей, видов и контроллеров.

      Модель является источником данных, а вид – это Представление данных.

      Модель ничего не знает вообще о Представлениях.

      Однако, если Модель является динамичной, тогда она обеспечивает интерфейс прослушивания.

      Таким образом, Представление является просто наблюдателем модели.

      Когда данные в Модели меняются, она генерирует событие, отражающее изменение.

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

      Хорошо, где Контроллер в этой картине?

      Контролер отвечает за изменение модели.

      С помощью Контроллера, мы можем изменить то, как компонент отвечает на запросы пользователя без изменения его визуального представления.

      Обычно Контроллер состоит из графической части и некоторой логики приложения.