Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Консольное приложение

Простейший аплет
Аплет с параметрами
Комбинированное приложение
Консольное с окном Frame
Аплет с окном Frame
Комбинированное с окном Frame
Библиотека классов
Аплет с обработкой событий
Консольное с обработкой событий

Назад Вперед

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.).

pic1.gif (1957 bytes)

Рис. 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.

Назад Вперед

[Назад]