Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры-2 оопип часть 4.doc
Скачиваний:
46
Добавлен:
01.04.2014
Размер:
445.44 Кб
Скачать

50. Основы оконной графики 51. Иерархия классов awt

AWT – Abstract Window Toolkit – абстрактный оконный интерфейс. Основное назначение пакета AWT: поддержка окон апплета и создание обычных GUI-приложений. Классы пакета AWT определяют интерфейсные окна и работу с визуальными компонентами окон и содержатся в пакете java.awt.

На рис. 5.2 представлен фрагмент иерархии классов AWT. Практически все классы пакета AWT являются потомками абстрактного класса Component.

Рис. 5.2. Фрагмент иерархии классов AWT

Класс Applet

Для работы с апплетами предназначен класс Applet, который определяет методы, представленные в табл. 5.1. Applet обеспечивает всю необходимую поддержку для выполнения апплетов, такую как запуск и остановка. Он также реализует методы, которые загружают и показывают изображения, и методы, которые загружают и проигрывают аудио-клипы.

Когда апплет начинает выполняться, AWT вызывает методы в такой последовательности:

1)init(); 2)start (); 3)paint ()

При завершении апплета имеет место следующая последовательность вызовов:

1)stop (); 2)destroy ()

Апплет можно запускать как из HTML-документа, так и из программы просмотра апплета. Для этого используется тег <applet> языка HTML. Программа просмотра апплета выполняет каждый <applet>-тeг, который она находит, в отдельном окне, в то время как Web-браузеры Netscape Navigator, Internet Explorer и HotJava допускают много апплетов на одной странице.

Покажем синтаксис тега <applet>. Параметры в квадратных скобках — не обязательны.

<applet

[CODEBASE = codebaseURL]

CODE = appletFile

[ALT = altemateText]

[NAME = appletInstanceName]

WIDTH = pixels HEIGHT = pixels

[ALIGN = alignment]

[VSPACE = pixels] [HSPACE = pixels]

>

[< param NAME = AttributeName value = AttributeValue>]

[< param NAME = AttributeName2 value= AttributeValue>]

[HTML Displayed in the absence of Java]

</applet>

CODEBASE — необязательный параметр, который определяет базовый URL-адрес кода апплета. Базовый URL — это каталог, в котором будет разыскиваться исполняемый файл апплета (имя этого файла указывается параметром CODE).

CODE — обязательный параметр, который задает имя файла, содержащего откомпилированный файл (с расширением .class) вашего апплета.

WIDTH и HEIGHT — это обязательные параметры, которые задают размер области показа апплета (в пикселах).

Тег <param> (с параметрами NAME= и VALUE=) – позволяет указывать на HTML-странице параметры, специфические для данного апплета. Апплет получает доступ к этим параметрам с помощью метода getParameter().

52. Свойства класса Component

Абстрактный класс, инкапсулирующий все элементы визуального интерфейса пользователя. Все управляющие компоненты окна пользователя являются подклассами класса Component. В данном классе определено более 100 методов, которые отвечают за управление событиями, позиционирование, управление размерами, управление цветами, перерисовку.

53. Класс Container

Класс Component служит в качестве базового класса для класса Container.

Контейнер описывается классом Container, который является наследником Component, а значит, обладает всеми свойствами графического компонента. Однако основная его задача – группировать другие компоненты. Для этого в нем объявлен целый ряд методов. Для добавления служит метод add, для удаления – remove и removeAll (последний удаляет все компоненты).

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

getComponent(int n) – возвращает компонент с указанным порядковым номером;

getComponents() – возвращает все компоненты в виде массива;

getComponentCount() – возвращает количество компонент;

getComponentAt(int x, int y) или (Point p) – возвращает компонент, который включает в себя указанную точку;

findComponentAt(int x, int y) или (Point p) – возвращает видимый компонент, включающий в себя указанную точку.

Мы уже знаем, что положение компонента (location) задается координатами левого верхнего угла. Важно, что эти значения отсчитываются от левого верхнего угла контейнера, который таким образом является центром системы координат для каждого находящегося в нем компонента. Если важно расположение компонента на экране безотносительно его контейнера, можно воспользоваться методом getLocationOnScreen.

Благодаря наследованию контейнер также имеет свойство size. Этот размер задается независимо от размера и положения вложенных компонент. Таким образом, компоненты могут располагаться частично или полностью за пределами своего контейнера (что это означает, будет рассмотрено ниже, но принципиально это допустимо).

Раз контейнер наследуется от Component, он сам является компонентом, а значит, может быть добавлен в другой, вышестоящий контейнер. В то же время компонент может находиться лишь в одном контейнере. Это означает, что все элементы сложного пользовательского интерфейса объединяются в иерархическое дерево. Такая организация не только облегчает операции над ними, но и задает основные свойства всей работы AWT. Одним из них является принцип отрисовки компонентов.

В окне аплета вы можете создать несколько объектов класса Panel (панелей), разделяющих окно на части. Для каждой такой панели можно установить свою стратегию размещения компонент и контейнеров, что позволяет выполнять достаточно сложную компоновку в окне аплета.