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

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

Каждый контейнер верхнего уровня имеет панель содержимого contentPane, которая содержит видимые компоненты контейнера верхнего уровня.

Вы можете дополнительно добавить панель меню в контейнер верхнего уровня.

Панель меню расположена в контейнере верхнего уровня, но вне панели содержимого.

Получить панель содержимого контейнера верхнего уровня можно с помощью метода getContentPane.

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

Однако можно создать панель JPanel и установить ее как панель содержимого, используя метод setContentPane контейнера верхнего уровня.

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

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

Каждый контейнер верхнего уровня использует промежуточный контейнер, называемый корневой панелью root pane.

Корневая панель управляет панелью содержимого и панелью меню вместе с несколькими другими контейнерами.

Здесь слоистая панель layered pane содержит панель меню и панель содержимого и обеспечивает упорядочивание других компонентов по оси Z.

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

Здесь показан пример создания пользовательского диалога.

В конструкторе класса используется панель содержимого для создания интерфейса диалога.

Также переопределяется метод createRootPane, который создает корневую панель, для закрытия диалога при нажатии кнопки «Escape».

В этом методе используется метод getKeyStroke класса KeyStroke для установки нажатия клавиши ESCAPE.

Также создается действие AbstractAction, реализующее метод actionPerformed, в котором используются методы setVisible и dispose, чтобы сделать окно невидимым и удалить его.

Таким образом определенные KeyStroke и AbstractAction используются в созданной корневой панели JRootPane.

Метод getInputMap класса JRootPane используется для получения входной карты, когда компонент имеет фокус.

Во входной карте мы устанавливаем нажатие клавиши «ESCAPE».

Мы также получаем карту действия ActionMap, чтобы связать действие и нажатие клавиши.

<p>Glass Pane</p>

Здесь показан пример использования панели Glass Pane для рисования поверх компонентов, содержащихся в панели содержимого.

Пользовательская панель Glass Pane устанавливается для контейнера верхнего уровня методом setGlassPane.

Так как по умолчанию она невидима, для нее нужно вызвать метод setVisible (true).

Панель по умолчанию можно получить методом getGlassPane контейнера верхнего уровня.

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

Каждая корневая панель root pane контейнера верхнего уровня помещает панель меню и панель содержимого в экземпляр слоистой панели JLayeredPane.

Порядок Z слоистой панели обеспечивает такое поведение, как отображение всплывающих меню над другими компонентами.

Слоистая панель может использоваться для размещения компонентов один над другим по оси Z, создавая таким образом 3D эффект глубины.

Панель по умолчанию можно получить методом getLayeredPane контейнера верхнего уровня.

Установить пользовательскую панель для контейнера верхнего уровня можно методом setLayeredPane.

Компоненты добавляются в панель методом add, при этом указывается позиция на оси Z компонента.

По умолчанию слоистая панель не имеет менеджера компоновки, поэтому для размещения компонентов используется метод setBounds.

<p>JInternalFrame</p>

С помощью классов JInternalFrame и JDesktopPane можно создавать многооконные приложения, в которых программа имеет одну большую панель «рабочий стол», которая содержит все остальные окна.

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

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

Класс JDesktopPane расширяет класс JLayeredPane специально для работы с внутренними окнами JInternalFrame.

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

Вы создаете объекты JInternalFrame и добавляете их в объект JDesktopPane.

Объект JInternalFrame представляет собой легковесный объект, который обеспечивает многие функции нативного или тяжеловесного фрейма, включая перетаскивание, закрытие, минимизирование, изменение размера, отображение заголовка и поддержку строки меню.

Каждое внутреннее окно JInternalFrame содержит корневую панель JRootPane.

При использовании внутренних окон вы должны установить их размер.

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

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

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

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

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

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

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

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

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