Назад
Вперед
2.5. Консольное приложение с окном Frame
Пример демонстрирует простейший способ
создания окна класса Frame в консольном приложении
Java.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Немного теории
Автономное приложение Java может создать окно
класса Frame. Такое окно снабжается заголовком и
дополнительно может иметь меню. По своему
внешнему виду оно напоминает стандартное окно,
создаваемое приложениями современных
операционных систем с графическим интерфейсом
(Windows, OS/2 и других).
Для рисования в окне программисту доступны все
классы и методы AWT, обычно применяемые аплетами.
Как создать окно класса Frame?
Для этого в приложении необходимо определить
новый класс на базе класса Frame, воспользовавшись
ключевым словом extends. В этом классе нужно
предусмотреть конструктор, а также
переопределить методы paint, handleEvent, action и другие.
Заметим, что класс Frame создан на базе класса Window
и, следовательно, реализует все определенные в
нем методы.
Описание примера
В нашем приложении мы создадим простейшее окно
на базе класса, произведенного от класса Frame (рис.
1.).

Рис. 1. Окно, созданное на базе класса Frame
Главный класс приложения
Так как это приложение является автономным, в
его главном классе определен статический метод
main:
public static void main(String args[])
{
FrameWindow frame;
frame = new FrameWindow("Frame window");
frame.show();
}
В теле метода main имеется переменная frame класса
FrameWindow, созданного на базе класса Frame. При
инициализации конструктору этого класса
передается строка "Frame window", которая будет
отображаться в заголовке создаваемого окна.
Чтобы отобразить окно, метод main вызывает метод
show, определенный в классе Window.
Класс FrameWindow
Помимо конструктора, мы определили в классе
FrameWindow методы paint и handleEvent. Структура класса
показана ниже:
class FrameWindow extends Frame
{
public FrameWindow(String szTitle)
{
. . .
}
public void paint(Graphics g)
{
. . .
}
public boolean handleEvent(Event evt)
{
. . .
}
}
Исходный текст конструктора приведен ниже:
public FrameWindow(String szTitle)
{
super(szTitle);
resize(200, 90);
setBackground(Color.yellow);
setForeground(Color.black);
}
Получив через единственный параметр строку
заголовка окна, наш конструктор передает ее
конструктору базового класса, вызываемого при
помощи ключевого слова super. Напомним, что вызов
конструктора базового класса должен находиться
в первой исполняемой строке дочернего класса.
Далее конструктор устанавливает размеры окна,
цвет фона и изображения.
Метод paint выбирает в контекст отображения новый
шрифт, рисует текстовую строку "Text in frame window",
а затем вызывает метод paint базового класса:
public void paint(Graphics g)
{
g.setFont(new Font(
"Helvetica", Font.PLAIN, 12));
g.drawString("Text in frame window",
10, 50);
super.paint(g);
}
Чтобы пользователь мог закрыть окно при помощи
органов управления, расположенных в области
заголовка, мы переопределили метод handleEvent:
public boolean handleEvent(Event evt)
{
if(evt.id == Event.WINDOW_DESTROY)
{
setVisible(false);
System.exit(0);
return true;
}
else
return super.handleEvent(evt);
}
При попытке удаления окна этому методу
передается код события Event.WINDOW_DESTROY. В ответ на
него метод скрывает окно и завершает работу
интерпретатора Java.
Назад Вперед |