Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java10.pptx
Скачиваний:
133
Добавлен:
16.04.2015
Размер:
144.22 Кб
Скачать

JAVA-ТЕХНОЛОГИЯ

Сафонов Владимир Олегович

Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)

Email: vosafonov@gmail.com

Лекция 10

Базовый инструментарий работы с GUI –

AWT (Abstract Window Toolkit)

Работа с окнами и другими визуальными элементами управления (кнопками, списками, линейками прокрутки и др.)

Управление шрифтами, цветами и размещением компонент

Двумерная растровая графика (Graphics, Graphics2D)

Создание и обработка событий

В отличие от многих других инструментов поддержки GUI, не требует жесткой привязки компонент к экранным координатам; обеспечивает несколько способов их компоновки с помощью менеджеров размещения (layout managers)

Определяет иерархию классов визуальных компонент (около

100)и интерфейсов для управления ими

Содержит классы для передачи данных (data transfer) с использованием визуальной парадигмы cut-and-paste через платформно-зависимый буфер (clipboard)

(C)В.О. Сафонов. 2013

Схема иерархии классов AWT (фрагмент)

Component

Container

Window

 

Panel

 

 

 

Frame

java.applet.Applet

 

(C) В.О. Сафонов. 2013

Иерархия классов AWT: класс Component

Component – абстрактный базовый класс. Основные методы:

-визуализация / упрятывание компоненты:

c.setVisible(true); // показать; метод c.show() – deprecated! c.setVisible(false); // спрятать; метод c.hide() - deprecated! c.isVisible() – узнать, видна ли компонента

-основной цвет и цвет фона:

c.setForeground(Color.lightGray); // установка основного цвета

c.setBackground(Color.black);

// установка цвета фона

- размеры компоненты:

 

c.setSize(width, height); // установка размеров

Dimension s = c.getSize(); int x = s.getWidth(); int y = getHeight();

-шрифт для изображения текстов: c.setFont(new Font(“SansSerif”, Font.ITALIC, 12));

здесь “SansSerif” – имя гарнитуры, ITALIC – курсив, 12 – размер; размер указан в пунктах (points) : 1 пункт = 1/72 дюйма

-c.addNotify() - связь самой внешней компоненты с экранным native- ресурсом, предоставляемым целевой платформой (создание native peer).

По документации JDK, его явный вызов не требуется. Тестирование: для JDK 1.5 (Windows XP) - не требуется,

для JDK 1.3 (Solaris) – требуется

(C) В.О. Сафонов. 2013

Иерархия классов AWT: класс Container

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

В AWT две разновидности контейнеров:

-окно (Window) – область, размеры и положение которой можно изменять с помощью мыши, содержащая либо фрейм (Frame) – окно верхнего уровня с заголовком, либо диалог (Dialog) – окно, предназначенное для диалога с пользователем

-панель (Panel) – область экрана, предоставляемая Java-программе (например, апплету) другим приложением (браузером, визуализатором апплетов и др.), в которой Java-программа может размещать свои визуальные компоненты. Applet – потомок Panel

Основные методы:

c.add(subComponent); - добавление подкомпоненты и ее размещение

менеджером размещения (LayoutManager) по умолчанию.

Для окон и фреймов может давать неожиданные результаты (сливающиеся кнопки и т.п.).

Для панелей и апплетов – более безопасно. В общем случае:

 

(C) В.О. Сафонов. 2013

c.add(subComponent, clarification); // добавление компоненты

c.remove(subComponent);

// удаление компоненты

Размещение подкомпонент в контейнере AWT

Определяется менеджером размещения (LayoutManager)

Возможные типы размещения:

- BorderLayout (умолчание для Window и Frame) – слева (WEST), справа (EAST), вверху (NORTH), внизу (SOUTH) и в центре (CENTER). По умолчанию – CENTER.

Пример размещения подкомпоненты:

c.add(subComponent, BorderLayout.WEST); // слева

- FlowLayout – слева направо, как текст в абзаце (умолчание для Panel и Applet) : LEFT – выравнивание по левому краю, RIGHT – по правому, CENTER – с центровкой; LEADING, TRAILING – в соответствии с ориентацией компоненты- родителя. По умолчанию - CENTER

Пример размещения компоненты фрейма по умолчанию: aFrame.add(SubComponent); // с центровкой

- Другие типы размещения:

GridLayout – как прямоугольная решетка

BoxLayout – “в коробке”, вертикально или горизонтально

CardLayout – как колода карт (только одна “карта” видна в

каждый момент)

(C) В.О. Сафонов. 2013

 

(C) В.О. Сафонов. 2013

AWT: пример (слайд 1 / 6 )

import java.awt.*; import java.awt.event.*; public class FrameUser {

public static void main (String[] args)

{

Frame f = new Frame("My frame"); f.setSize(200, 200);

f.addNotify(); // для нотификации о закрытии

// native-окна (JDK 1.3, Solaris 8) f.addWindowListener(

new WindowAdapter() {

public void windowClosing(WindowEvent w) { System.exit(0); }

} );

AWT: пример (слайд 2 / 6 )

Button b1 = new Button("Yes"); // кнопка b1.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent e)

{

((Button) e.getSource())

.getParent()

.setBackground(Color.green);

}});

//обработка события нажатия кнопки Yes:

//вся картинка окрашивается в зеленый цвет

(C)В.О. Сафонов. 2013

AWT: пример (слайд 3 / 6 )

Button b2 = new Button("No"); // кнопка b2.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent e)

{

((Button) e.getSource())

.getParent()

.setBackground(Color.red);

}});

//обработка события нажатия кнопки No” –

//вся картинка окрашивается в красный цвет

(C)В.О. Сафонов. 2013

AWT: пример (слайд 4 / 6 )

Button b3 = new Button("Cancel"); // кнопка Cancelb3.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}});

//обработка события нажатия кнопки Cancel” –

//выход из приложения

(C)В.О. Сафонов. 2013

Соседние файлы в папке java1_2013_2014