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

В простейшем случае создается простая рамка толщиной в один пиксель, в которую слева сверху вставлена строка.

Однако надпись можно вставить в рамку любого типа.

Первым аргументом служит рамка, в которую нужно вставить надпись, второй аргумент – это надпись, третий аргумент – это выравнивание надписи по горизонтали, четвертый аргумент – это расположение надписи на рамке, пятый аргумент – это шрифт, и шестой аргумент – это цвет надписи.

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

Первым аргументов указывается внешняя рамка, а вторым аргументом указывается внутренняя рамка.

Рамка DashedBorder представляет собой пунктирную линию.

Первым аргументом указывается цвет рамки, второй аргумент – это длина пунктира, третий аргумент – это расстояние между пунктирами.

Свою рамку можно создать, расширив какой-либо класс рамок или расширив абстрактный класс AbstractBorder.

<p>Look and Feel</p>

Как уже было сказано, вид и контроллер, в архитектуре MVC библиотеки Swing, объединены вместе в один элемент – представителя пользовательского интерфейса (delegate UI).

Класс графического Swing компонента связывает модель и представителя с помощью менеджера пользовательского интерфейса (UIManager), который определяет внешний вид и поведение интерфейса (Look and Feel).

Именно поэтому библиотека Swing имеет подключаемую архитектуру look-and-feel.

Вид (look) каждого графического компонента задают его форма, тип и цвет рамки, цвет фона, цвет, тип и размер шрифта, форма курсора мыши.

Поведение компонента (feel) определяют та или иная реакция на действия мыши, набор командных клавиш, способ перемещения окон и т. д.

Таким образом, для реализации модели MVC библиотека Swing использует делегирование (delegation) полномочий, назначая в качестве модели данных представителя (delegate) – экземпляр класса с именем вида xxxModel.

Класс библиотеки Swing содержит защищенное или даже закрытое поле model – объект этого класса-модели, и метод getModel, предоставляющий разработчику доступ к полю model.

Для обеспечения внешнего вида и поведения Swing компонента также используется делегирование полномочий.

Swing класс JComponent содержит защищенное поле ui – экземпляр класса-представителя ComponentUI из пакета javax.swing.plaf, непосредственно отвечающего за вывод изображения на экран в нужном виде.

Класс-представитель содержит методы paint и update, формирующие и обновляющие графику компонента.

Такие представители образуют целую иерархию с общим суперклассом ComponentUI.

Они собраны в пакет javax.swing.plaf и его подпакеты.

В их именах есть буквы UI (User Interface), например, ButtonUI.

Представители класса тоже являются полями класса Swing компонента, и доступ к ним осуществляется методами вида getUI.

Таким образом, каждый компонент имеет UI-делегата, который отвечает за внешний вид и поведение интерфейса (Look and Feel).

Класс UIManager имеет статический метод с именем getUI.

Когда создается какой-либо Swing компонент, он вызывает этот метод для получения UI-делегата.

UIManager знает, какой установлен текущий внешний вид, и таким образом, создается нужный экземпляр UI-делегата.

UIManager содержит текущий внешний вид и поведение в виде объекта LookAndFeel, который определяет сопоставления между идентификаторами классов и UI-делегатами в хэш-таблице UIDefaults.

Эта идея аналогична идее, используемой в библиотеке AWT для создания экземпляров пиров, зависимых от платформы.

LookAndFeel – это абстрактный базовый класс для всех классов внешнего вида и поведения.

Каждая реализация LookAndFeel должна обеспечивать реализацию соответствующего подкласса ComponentUI или UI-делегата, указав значение для каждого из идентификаторов классов Swing компонентов в объекте UIDefaults, который возвращается методом getDefaults LookAndFeel.

Теперь, как установить внешний вид и поведение?

Во-первых, если вы собираетесь установить L & F программным способом, вы должны сделать это как самый первый шаг в своем приложении.

В противном случае вы рискуете инициализировать L & F по умолчанию независимо от того, какой L & F вы затем запросили.

Это может произойти непреднамеренно, когда статическое поле ссылается на класс Swing, что приводит к загрузке L & F по умолчанию.

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

При этом класс UIManager хранит доступные L&F в виде массива объектов вложенного класса UIManager. LookAndFeelInfo.

Посмотреть все доступные L&F можно с помощью метода getInstalledLookAndFeels класса UIManager.

Задать один из доступных L&F можно с помощью статического метода setLookAndFeel класса UIManager.

Аргумент этого метода – это строка, содержащая полное имя нужного класса LookAndFeel со всеми подпакетами.

При динамическом изменении L&F нужно в слушателе UIManager вызвать метод updateComponentTreeUI класса SwingUtilities.

В аргументе этого метода нужно указать контейнер верхнего уровня, и этот метод рекурсивно просмотрит все вложенные контейнеры и компоненты, и для каждого компонента установит новый L&F.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных