Слайд 5Проблемы AWT Сходные элементы в различных ОС могут иметь некоторые различия
ОС
часто имеют элементы GUI, отсутствующие в других ОС
Использование native-методов в
AWT приводит к возникновению ошибок на конкретных платформах
Слайд 6Технология Swing Элементы GUI отрисовываются в пустых окнах «Нативные» функции используются только
для вывода окна, отрисовки и получения информации о действиях пользователя Набор
элементов GUI более широк, чем в AWT, и может быть еще расширен Сильная привязка к «нативным» методам отсутствует, что снижает вероятность возникновения ошибок Отображение на различных платформах единообразно
Слайд 9class NotHelloWorldPanel extends JPanel { public static final int MESSAGE_X
= 75; public static final int MESSAGE_Y = 100;
public void paintComponent(Graphics g) { super.paintComponent(g); g.drawString("Not a Hello, World program", MESSAGE_X, MESSAGE_Y); } }
Отрисовка компонентов
Отрисовка производится в методе paintComponent() Запрос на перерисовку public void repaint() public void repaint(long tm) public void repaint(int x, int y, int width, int height) public void repaint(long tm, int x, int y,
int width, int height)
Слайд 10Работа с графикой java.awt.Graphics Базовый класс, предназначенный для рисования в контекстах компонентов,
изображениях в памяти и т.д. Предлагает простые средства рисования:
void drawArc(int x, int y,
int width, int height,
int startAngle, int arcAngle)
void drawString(String str, int x, int y) и т.д. java.awt.Graphics2D Наследует java.awt.Graphics, обеспечивающий большую функциональность, в т.ч. работа с 2D-сценой java.awt.geom содержит набор классов работы с графическими примитивами
Слайд 11Работа с цветом Класс java.awt.Color Константы Color.BLUE, Color.RED Покомпонентные конструкторы
Color(float r, float g, float b,
float a)
Color(ColorSpace cspace,
float[] components,
float alpha) Методы получения
параметров цвета
getRed(), getTransparency()
Слайд 12Работа со шрифтами Класс java.awt.Font Константы Конструкторы
Font(String name, int style, int size) Методы модификации и получения
параметров шрифта
Класс java.awt.FontMetrics Содержит методы определения геометрических характеристик шрифтов
Слайд 13Двойная буферизация В целях экономии времени на перерисовку логично запоминать однажды
нарисованный статичный объект как рисунок в памяти При использовании Swing для
этого не надо предпринимать дополнительных действий по выделению памяти и.д. Используется т.н. механизм «двойной буферизации», реализующий сохранение информации на уровне механизмов отрисовки Для одного участка «видимой области» приложения используется не более одного изображения-буфера
Слайд 14Двойная буферизация Методы класса JComponent
setDoubleBuffered(boolean aFlag)
Устанавливает, буферизует ли объект свой вывод
boolean
isDoubleBuffered()
Возвращает булевское значение, показывающее, используется ли двойная буферизация, или нет
Слайд 15Pluggable Look And Feel Программе можно придать различный вид, изменив «стиль»
отрисовки компонентов Внешний вид программы может изменяться во время исполнения Перерисовка должна
вызываться принудительно Есть разработанные «стили» для базовых платформ Существует возможность создания собственных «стилей»
Слайд 22Работа с меню javax.swing.JMenuBar
Панель меню в верхней части окна javax.swing.JMenu
Меню как таковое javax.swing.JMenuItem
Единичный
элемент меню javax.swing.JCheckBoxMenuItem
Элемент меню «флажок» javax.swing.JRadioButtonMenuItem
Элемент меню «радио-кнопка» javax.swing.JPopup
Всплывающее меню
Слайд 23Менеджеры компоновки Управляют размещением компонентов в контейнере, учитывая параметры этих компонентов
(например, предпочтительный размер) Реализуют интерфейс java.awt.LayoutManager Устанавливаются с помощью метода setLayout() контейнера
Примеры простых компоновок: Простая поточная компоновка FlowLayout Поточная компоновка по вертикали/горизонтали BoxLayout Компоновка в сетку GridLayout Компоновка «Колода карт» CardLayout Сетка с настраиваемыми размерами GridBagLayout Граничная компоновка BorderLayout
Слайд 25Обработка событий Событие Классы событий в пакетах java.awt.event javax.swing.event Источник public void addTypeListener (TypeListener el) throws
java.util.TooManyListenersException public void removeTypeListener(TypeListener el) Слушатель Должен реализовывать методы для приема и обработки
уведомлений Существует набор интерфейсов TypeListener, описывающих методы обработки событий Класс слушателя должен реализовывать интерфейс, соответствующий событию
Слайд 37Классы-адаптеры Находятся в пакете java.awt.event Определены для интерфейсов слушателей того же пакета,
содержащих более одного метода Являются пустыми реализациями соответствующего интерфейса Наследники классов-адаптеров переопределяют
необходимые методы
Слайд 38Нерассмотренные возможности Компоненты и виды порождаемых событий Создание своих «стилей» отображения
javax.swing.plaf Вспомогательные классы
JOptionPane,
JFileChooser, JColorChooser и т.д. «Высокоинтеллектуальные» компоненты
JTree, JTable и т.д. Drag&Drop
java.awt.dnd Вывод на печать
java.awt.print
Слайд 39Понятие апплета Апплет (applet) – небольшое приложение, доступное на Интернет-сервере, транспортирующееся
по Интернет, автоматически устанавливающееся и выполняемое как часть Web-документа