Главная Интернет WEB-учебник Java в примерах


Интернет клуб

Новая страница
Описание html
Javascript
Java в примерах

Что такое JAVA?
Первое приложение на JAVA
Первый апплет на JAVA
Управление шрифтами
Строковые переменные
Работа с массивами
Работа с графикой
Операции с мышкой
Операции с клавиатурой
Структура апплета
Работа с потоками
Передача параметров в апплет
Загрузка изображения в апплет
Контроль за ходом загрузки изображения
Двойная буферизация
Создание изображения из массива данных
Корректировка изображения

Полезные сайты
Задайте вопрос









Web-учебник. Раздел 4. Java в примерах.

Структура апплета







Существует набор методов, обеспечивающих выполнение работы апплета.
Это следующие методы : init() , start(), paint(), stop(), destroy() .
Эти методы перекрывать (то есть определять в подклассе) не обязательно, но серьезные апплеты используют их для выполнения специфических операций. Разберем эти методы.

Метод init()

Этот метод вызывается первым. В нем обычно инициализируются переменные, определяются шрифты, файлы изображений, звуковые файлы и т. д. Данный метод выполняется только один раз, при загрузке апплета.
Другие операции, кроме инициализации и определений, в этом апплете не выполняются.

Метод start()

Этот метод вызывается после метода init() а также для перезапуска апплета после его приостановки. Задачей метода является запуск апплета. Он вызывается всякий раз, когда документ HTML данного апплета отображается на экране.

Метод paint()

Этот метод мы уже неоднократно использовали. Он вызывается каждый раз, когда необходимо перерисовать окно апплета или его часть. Например, :
- в начале выполнения апплета,
- при перемещении окна,
- при перекрытии окна апплета другим окном и открытии его снова,
- когда окно минимизировано, а затем восстановлено.
Метод имеет один параметр типа Graphics , который содержит графический контекст, описывающий графическую среду, в которой работает апплет.
Заметим, что метод paint() в вышеприведенных случаях вызывается факторами, внешними по отношению к апплету. А если сам апплет хочет обновить окно?
При необходимости обновить информацию в окне апплета следует вызвать метод repaint() .
Две основные формы этого метода:
- repaint() - когда надо перерисовать апплет целиком,
- repaint(BegX, BegY, LengthX, LengthY) - когда надо перерисовать часть апплета. Здесь BegX, BegY - верхний левый угол прямоугольника перерисовки, LengthX, LengthY - размеры этого прямоугольника.

Метод stop()

Метод вызывается в том случае, когда браузер переходит на чтение другой страницы. Метод вызывается для приостановки работы апплета, который не виден на экране. Если браузер вернется к этой странице, то апплет запустится снова при помощи метода start() .

Метод destroy()

Метод вызывается при необходимости полностью удалить апплет из памяти. Здесь необходимо освободить все ресурсы, используемые апплетом. Перед вызовом данного метода всегда вызывается метод stop() .

Я совсем не уверен, что всем все ясно - поэтому рассмотрим апплет с данными методами. Введем 5 счетчиков - по одному для каждого метода. При прохождении через метод его соответствующий счетчик увеличивается на 1. При прохождении через метод paint() значения счетчиков отображается в апплете. Теперь Вы можете проследить прохождение программы через эти методы.

Ниже приводится исходный текст этого апплета.

//------------------------------------------------------------  
//   Program :  MyAllMethods  
//------------------------------------------------------------  
//   Author  :  Katz Yakov 
//------------------------------------------------------------  
//   Date    :  08/01/98
//------------------------------------------------------------  
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
//------------------------------------------------------------  
// Определение класса MyAllMethods
public  class  MyAllMethods  extends  Applet{
   // Задание счетчиков для подсчета количества
   // прохождений каждого метода
   int CountInit = 0;
   int CountStart = 0;
   int CountPaint = 0;
   int CountStop = 0;
   int CountDestroy = 0;
   // Задание текстовой переменной для вывода
   // значения счетчиков
   String TextDisplay = new String();
   // Перекрытие метода инициализации
   public void init() {
      CountInit++;
   }
   // Перекрытие метода начала работы
   public void start() {
      CountStart++;
   }
   // Перекрытие метода рисования окна
   public void paint(Graphics  gr) {
      CountPaint++;
      TextDisplay = " Init    = " + CountInit;
      gr.drawString (TextDisplay,   20, 40);
      TextDisplay = " Start   = " + CountStart;
      gr.drawString (TextDisplay,   20, 80);
      TextDisplay = " Paint   = " + CountPaint;
      gr.drawString (TextDisplay,   20, 120);
      TextDisplay = " Stop    = " + CountStop;
      gr.drawString (TextDisplay,   20, 160);
      TextDisplay = " Destroy = " + CountDestroy;
      gr.drawString (TextDisplay,   20, 200);
   }
   // Перекрытие метода остановки
   public void stop() {
      CountStop++;
   }
   // Перекрытие метода завершения
   public void destroy() {
      CountDestroy++;
  }
}
Я бы советовал выполнить компиляцию и просмотр апплета с помощью appletviewer , так как поведение счетчиков CountStart и CountStop в этом случае несколько отличается от их поведения в апплете в этой странице.







  ©1996-2007   Megapolis Org   E-mail:   info@megapolis.org