Пакет java.awt. Основные компоненты: Component, Container, Panel

Автор работы: Пользователь скрыл имя, 23 Декабря 2014 в 23:27, реферат

Краткое описание

Есть много различных графических систем: MS Windows, X Window System, Macintosh. В каждой из них свои правила построения окон и их компонентов: меню, полей ввода, кнопок, списков, полос прокрутки. Эти правила сложны и запутанны.
Для облегчения создания окон и их компонентов написаны библиотеки классов: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows и множество других

Прикрепленные файлы: 1 файл

Referat_dzhava_moy.docx

— 207.38 Кб (Скачать документ)

Нижегородский Государственный Технический Университет им. Р.Е.Алексеева

 

 

 

 

 

Реферат по дисциплине «Программирование на языке высокого уровня» на тему: «Пакет java.awt. Основные компоненты: Component, Container, Panel»

 

 

 

 

      Выполнил:

             Ст. гр. 09-ИТД

     Ахлестин Д.М.

Проверила:

Левина Е.В.

 

 

 

Нижний Новгород

2011

  1. Пакет java.awt

Есть много различных графических систем: MS Windows, X Window System, Macintosh. В каждой из них свои правила построения окон и их компонентов: меню, полей ввода, кнопок, списков, полос прокрутки. Эти правила сложны и запутанны.

Для облегчения создания окон и их компонентов написаны библиотеки классов: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows и множество других. Каждый класс такой библиотеки описывает сразу целый графический компонент, управляемый методами этого и других классов.

В технологии Java дело осложняется тем, что приложения Java должны работать в любой или хотя бы во многих графических средах. Нужна библиотека классов, независимая от конкретной графической системы. Классы библиотеки AWT реализуют эти интерфейсы для создания приложений. Приложения Java используют данные методы для размещения и перемещения графических объектов, изменения их размеров, взаимодействия объектов.

С другой стороны, для работы с экраном в конкретной графической среде эти интерфейсы реализуются в каждой такой среде отдельно. В каждой графической оболочке это делается по-своему, средствами этой оболочки с помощью, графических библиотек данной операционной системы. Библиотека классов Java, получила название AWT (Abstract Window Toolkit).

Итак, что же  такое awt? Это набор классов Java, каждый из которых отвечает  за реализацию функций  и  отображение  того  или  иного  элемента  графического  интерфейса  пользователя (GUI).  Практически  все  классы  визуальных  компонентов  являются  потомками  абстрактного класса  Component.  Лишь  визуальные  элементы  меню  наследуются  от  другого  класса - MenuComponent.  Управляющие  элементы  представлены  следующими  классами:  Button (кнопка),  Checkbox  (кнопка  с  независимой  фиксацией),  Choice (раскрывающийся  список Windows), Label (строка), List (список выбора Windows) и Scrollbar  (полоса прокрутки). Это достаточно простые классы, наследуемые от абстрактного класса Component напрямую. 

Однако  в  составе  Java.awt  имеются  классы  интерфейсных  элементов,  имеющие промежуточного  предка.  Хорошим  примером  тому  является  класс  Panel  для  создания различных  панелей.  У  него  имеется  промежуточный  абстрактный  класс-предок  Container, служащий родоначальником многих классов-контейнеров, способных содержать в себе другие элементы интерфейса. От этого же класса наследуется класс окна Window, представляющий на экране  простейшее  окно  без  меню  и  рамки.  У  этого  класса  есть  два  часто  используемых потомка: Dialog, название которого говорит само за себя, и Frame - стандартное окно Windows.

Еще один промежуточный класс TextComponent порождает два полезнейших в работе класса - TextField (аналог  строки  ввода Windows)  и  многострочное  окно  текстового  ввода TextArea.

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

 

 

  1. Иерархия классов AWT

На рис. 1 показана иерархия основных классов AWT. Основу ее составляют готовые компоненты: Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextArea, TextField, Menubar, Menu, PopupMenu, Menultem, CheckboxMenuItem. Если этого набора не хватает, то от класса Canvas можно породить собственные "тяжелые" компоненты, а от класса Component — "легкие" компоненты.

Основные контейнеры — это классы Panel, ScrollPane, Window, Frame, Dialog, FileDialog. Свои "тяжелые" контейнеры можно породить от класса Panel, а "легкие" — от класса container.

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

На рис.1 показаны и начальные классы иерархии библиотеки Swing — классы JComponent, JWindow, JFrame, JDialog, JApplet.

 

 

Рис.1. Иерархия  основных классов AWT

 

  1. Component

В AWT компонентом считается объект класса Component или объект всякого класса, расширяющего класс component. В классе component собраны общие методы работы с любым компонентом графического интерфейса пользователя. Этот класс — центр библиотеки AWT.

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

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

изменение шрифта - методы getFont, setFont, getFontMetrics;

изменение цвета шрифта - методы setForeground(Color) и getForeground() - для установки и чтения цвета самого шрифта, а также setBackground(Color) и getBackground() для установки, а также чтения цвета фона, на котором отображается текст;

размер и позиция на экране - методы preferredSize() и minimumSize() сообщают менеджеру раскладок о предпочтительном и минимальном размерах компонента, соответственно;

отображение компонента - методы paint(), update() и repaint();

обработка сообщений - методы handleEvent(), action(), keyDown(), keyUp(), mouseDown(), mouseUp(), mouseDrag(), mouseMove(), mouseEnter() и mouseExit().

 

  1. Panel

Панели, создаваемые на базе класса Panel, являются мощным средством организации диалогового интерфейса. Так как класс Panel произошел от класса Container, панель может содержать компоненты и другие панели. Для каждой панели можно определить режим размещения компонент, что позволяет создавать достаточно сложный пользовательский интерфейс.

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

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

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

setLayout(new GridLayout(2, 1));

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

Далее нужно создать объекты класса Panel:

Panel pTopPanel;

pTopPanel = new Panel();

Panel pBottomPanel;

pBottomPanel = new Panel();

Ссылка на панель, которая будет располагаться сверху, записывается в переменную pTopPanel, а на ту, что будет располагаться снизу - в переменную pBottomPanel.

Создав панели, вы можете добавить их в окно аплета, вызвав метод add, как это показано ниже:

add(pTopPanel);

add(pBottomPanel);

Можно  добавлять панели в панели, указывая, для какой панели нужно вызывать метод add:

Panel pLeft;

Panel pRight;

pLeft  = new Panel();

pRight = new Panel();

pTopPanel.setLayout(new GridLayout(1, 2));

pTopPanel.add(pLeft);

pTopPanel.add(pRight);

Здесь мы создали две панели pLeft и pRight, которые по нашему замыслу должны разделить пространство панели pTopPanel на две части по вертикали. Для обеспечения вертикального размещения панелей pLeft и pRight в панели pTopPanel мы вызвали для панели pTopPanel метод setLayout. При этом мы указали, что компоненты, добавляемые в эту панель, должны размещаться в таблице, состоящей из одной строки и двух столбцов.

Затем панели pLeft и pRight были добавлены в панель pTopPanel методом add.

Для добавления компонент в панель необходимо указать, для какой панели вызывается метод add, например:

Botton btn1;

Botton btn2;

btn1 = new Button();

btn2 = new Button();

pBottomPanel.add(btn1);

pBottomPanel.add(btn2);

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

Проще всего это сделать с помощью метода getGraphics, вызвав его для объекта класса Panel:

Graphics gpDraw;

gpDraw = pDraw.getGraphics();

Здесь в переменную gpDraw мы записали ссылку на контекст отображения для панели pDraw.

Получив контекст отображения, можно приступить к рисованию. Вот, например, как можно нарисовать вокруг панели тонкую рамку:

Dimension dimAppWndDimension = pDraw.size();

gpDraw.drawRect(0, 0,

  dimAppWndDimension.width  - 1,

  dimAppWndDimension.height - 1);

В этом фрагменте кода мы вначале определили размеры панели, вызвав для нее метод size, а затем при помощи метода drawRect, вызванного для контекста отображения gpDraw, нарисовали рамку.

Для установки шрифта и рисования текста в окне панели должны указывать ссылку на контекст отображения вашей панели:

gpDraw.setFont(new Font("Courier",

  Font.PLAIN, 12));

gpDraw.drawString(

  "Текст внутри окна панели", 10, 50);

 

 

Пример : 

  1. Container

Container - это абстрактный подкласс класса Component, определяющий дополнительные методы,  которые  дают  возможность  помещать  в  него  другие  компоненты,  что  дает возможность  построения  иерархической  системы  визуальных  объектов.  Container отвечает за расположение содержащихся в нем компонентов с помощью интерфейса LayoutManager.

Любой  компонент,  требующий  показа  на  экране,  должен  быть  добавлен  в  класс-контейнер.

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

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

// Создается текстовый  объект 

с надписью "Строка"

Label text = new Label("Строка");

// Объект добавляется в  некий контейнер 

SomeContainer.add (text);

// Отображается контейнер 

SomeContainer.Show();

...

Все достаточно просто. Лишь поясним метод add(). Этим методом и производится собственно добавление элемента интерфейса в окно контейнера. В нашем примере мы использовали самый простой вариант этого метода, принимающий единственный аргумент-ссылку на вставляемый объект.  Но  есть  еще  два  варианта  метода  add()  с  двумя  аргументами.  В  первом  из  них передаются  порядковый  номер  в  списке  управляющих  элементов  контейнера,  куда  будет вставлен добавляемый элемент, и ссылка на вставляемый объект. Во втором варианте первый аргумент - строка, указывающая место в окне, где должен быть размещен вставляемый объект интерфейса, а второй - ссылка на вставляемый объект. Строк, допустимых в качестве первого аргумента,  всего  пять:  North,  South, East, West  и  Center.  Подробнее  мы  рассмотрим  их  в разделе, посвященном раскладкам.

// Вставить элемент в  окно контейнера 

add(someControl);

// Вставить элемент после  других 

// элементов в контейнере 

add(-1, someControl);

// Вставить элемент в  окно контейнера 

// у его верхней границы 

add("North", someControl);

Само  собой  разумеется,  коли  есть методы  для  добавления  визуальных  элементов,  имеются  и противоположные  им  методы,  удаляющие  элементы  из  окна  контейнера.  Их  два:  метод удаления  конкретного  элемента  remove(),  принимающий  в  качестве  параметра  ссылку  на удаляемый объект, и метод удаления всех визуальных компонентов removeAll().

 

 

 

 

 

 

 

 

 

 

Пример:


Информация о работе Пакет java.awt. Основные компоненты: Component, Container, Panel