- •30.Общее представление о потоках ввода/вывода
- •31.Байтовые и символьные потоки
- •32. Определение файла. Тестирование проверка объектов File
- •34. Сериализация
- •35. Обработка исключений в Java
- •36. Многопоточное программирование
- •37. Создание потока и его жизненный цикл
- •38. Управление приоритетами и ThreadGroup
- •39. Потоки-демоны
- •40. Методы synchronized
- •41. Коллекции
- •42. Списки
- •43. 43. Множества
- •44. Карты отображений
- •45. Обзор сокетов
- •49. Дейтаграммы
- •46. Сетевые классы и интерфейсы 47. Производственные методы 48. Сокеты tcp/ip клиентов и серверов
- •50. Основы оконной графики 51. Иерархия классов awt
- •Класс Applet
- •52. Свойства класса Component
- •53. Класс Container
- •54. Наследники класса Component
- •55. Классы Choice и List
- •56. Классы TextComponent, TextField, TextArea
- •57. Наследники Container
- •58. Swing-технология
- •59. Обработка событий в Java
- •60. Классы-адаптеры
- •61. Понятие и терминология jdbc 62. Связь и различия jdbc и odbc
- •63. Драйвера, соединения и запросы
- •64. DriverManager
- •65. Создание соединения с источником данных
- •66. Интерфейсы Statement, PreparedStatement и CallableStatement
- •69. Использование потоков в апплетах
- •70. Основы xml
- •71. Xml. Схема dtd. Элемент Schema схемы xml
- •72. Ссылки xml
- •74. Язык xLink (Атрибуты связующих элементов xLink, возможные значения атрибута xlink:show, возможные значения атрибута xlink:actuate)
- •75. Язык xPointer (Синтаксис xPointer, элементы абсолютного обнаружения xPointer, выражения отношений, фильтры атрибутов и их значений)
- •76. Объектная модель документа xml – dom
- •77. Simple api для xml (sax)
- •78. Язык преобразований xslt (Операционный xslt, процесс преобразования xsl, использование xslt, преобразования xml в html)
- •80. Сервлеты: структура, назначение и преимущества
- •81. Жизненный цикл сервлета
- •83. Пакеты javax.Servlet и javax.Servlet.Http
- •84. Технология rmi. Сравнение распределенных и нераспределенных приложений
- •85. Архитектура rmi
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 (панелей), разделяющих окно на части. Для каждой такой панели можно установить свою стратегию размещения компонент и контейнеров, что позволяет выполнять достаточно сложную компоновку в окне аплета.