- •Введение в awt: работа с окнами, графикой и текстом
- •Классы awt
- •Основы оконной графики
- •Класс Component
- •Класс Container
- •Класс Panel
- •Класс Window
- •Класс Frame
- •Класс Canvas
- •Работа с фреймовыми окнами
- •Установка размеров окна
- •Скрытие и показ окна
- •Установка заголовка окна
- •Закрытие фрейм-окна
- •Создание фрейм-окна в апплете
- •Программа 97. Дочернее окно в апплете
- •Обработка событий фрейм-окна
- •Программа 98. Обработка событий мыши в окне апплета и дочернем окне
- •Создание оконной программы
- •Программа 99. Автономное оконное приложение
- •Отображение информации в окне
- •Работа с графикой
- •Рисование линий
- •Программа 100. Рисование линий в окне
- •Рисование прямоугольников
- •Программа 101. Рисование прямоугольников
- •Рисование эллипсов и кругов
- •Программа 102. Рисование эллипсов
- •Рисование дуг
- •Программа 103. Рисование дуг
- •Рисование многоугольников
- •Программа 104. Рисование многоугольников
- •Установка размеров графики
- •Программа 105. Изменение размеров рисунка
- •Работа с цветом
- •Цветовые методы
- •Использование тона, насыщенности и яркости
- •Методы getRed(), getGreen(), getBtue()
- •Метод getRgbq
- •Установка текущего цвета графики
- •Программа 106. Демонстрация цветов
- •Установка режима рисования
- •Программа 107. Режим рисования xor
- •Работа со шрифтами
- •Определение доступных шрифтов
- •Программа 108. Список шрифтов
- •Создание и выбор шрифта
- •Программа 109. Выбор шрифтов
- •Получение информации о шрифте
- •Программа 110. Свойства шрифта
- •Управление текстовым выводом с помощью класса FontMetrics
- •Отображение многострочного текста
- •Программа 111. Многострочный вывод
- •Выравнивание текста по центру
- •Программа 112. Центрирование текста
- •Выравнивание многострочного текста
- •Программа 113. Выравнивание многострочного текста
- •Исследование текста и графики
- •Задачи 13-15. Графика
Создание оконной программы
Хотя AWT чаще всего используется для создания апплетов, с его помощью можно также проектировать и автономные приложения. Для этого нужно просто организовать один или несколько оконных объектов внутри метода main(). Следующая автономная программа создает фрейм-окно, которое отвечает на щелчки мыши и нажатия клавиш.
Программа 99. Автономное оконное приложение
// Файл AppWindow.java
// Создать AWT-приложение.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
// Определить класс фрейм-окна.
public class AppWindow extends Frame {
String keymsg = "";
String mousemsg = "";
int mouseX = 30, mouseY = 30;
public AppWindow() {
addKeyListener(new MyKeyAdapter(this));
addMouseListener(new MyMouseAdapter(this));
addWindowListener(new MyWindowAdapter());
}
public void paint(Graphics g) {
g.drawString(keymsg, 10, 40);
g.drawString(mousemsg, mouseX, mouseY);
}
// Создать фрейм-окно для приложения.
public static void main(String args[]) {
AppWindow appwin = new AppWindow();
appwin.setSize(new Dimension(300, 200));
appwin.setTitle("An AWT-Based Application");
appwin.setVisible(true);
}
}
class MyKeyAdapter extends KeyAdapter {
AppWindow appWindow;
public MyKeyAdapter(AppWindow appWindow) {
this.appWindow = appWindow;
}
public void keyTyped(KeyEvent ke) {
appWindow.keymsg += ke.getKeyChar();
appWindow.repaint();
};
}
class MyMouseAdapter extends MouseAdapter {
AppWindow appWindow;
public MyMouseAdapter(AppWindow appWindow) {
this.appWindow = appWindow;
}
public void mousePressed(MouseEvent me) {
appWindow. mouseX = me.getX();
appWindow.mouseY = me.getY();
appWindow.mousemsg = "Mouse Down at " + appWindow.mouseX +
", " + appWindow.mouseY;
appWindow.repaint();
}
}
class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
Пример вывода этой программы представлен на рис. 5.
Рис. 5. Работа оконного приложения
После создания фрейм-окно живет своей собственной жизнью. Обратите внимание, что main()завершается обращением кappwin.setVisible (true).
Однако, программа поддерживается в рабочем состоянии, пока не будет закрыто ее окно. При создании оконного приложения main()используется, чтобы запустить для него окно верхнего уровня. После этого программа будет функционировать как GUI-приложение, а не как консольные программы, использовавшиеся ранее.
На рис.6 показано окно командной строки и окно работающей программы.
Для перехода в каталог с откомпилированным class-файлом выполнена команда:
>cd /d D:\EclipseJunoWorkspace\Progr99_AppWindow\bin
Следующая команда включает в переменную окружения classpathтекущий каталог, который обозначается точкой (.):
>set classpath=%classpath%;.;
Запуск программы осуществляется командой:
>java AppWindow
Рис. 6. Запуск оконного приложения из командной строки
Отображение информации в окне
В самом общем смысле окно является контейнером для разнообразной информации. Хотя в предшествующих примерах мы уже выводили небольшие порции текста в окно, мы еще не начали пользоваться способностью окна представлять высококачественный текст и графику. В действительности, большая часть средств AWTориентирована на поддержку именно этих возможностей. Ниже обсуждаются возможности обработки текста, графики и шрифтов на языкеJava. Эти возможности, как вы увидите, являются достаточно мощными и гибкими.