Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

9. Создание приложений на языке Java, запуск приложений

Исполняемая программа должна состоять, по крайней мере, из одного класса, содержащего метод main, с которого и начинается выполнение программы. Метод main должен быть описан следующим образом: public static void main(String args[ ] ) { /* Операторы */ }. Пример простейшей программы приведен ниже:

package games;

import java.awt.*; // импорт пакета просто ради примера class Game {

public Game (String Name) {

String messaga="Hачинается игра"+ Name;

System.out.println (messaga); } protected void finalize ( ) { System.out.println ("Игра окончена"); } }

public class dvor { Game domino; public dvor ( ) {

domino = new Game ("Домино"); }

public static void main ( String args[ ] ) { dvor zapusk = new dvor ( ); }

Не откомпилированная программа на Java хранится в файле с расширением java. После компиляции программой javac.exe из пакета JDC или любым другим компилятором получается большое количество файлов с расширением class, которые содержат байт-код соответствующих классов программы. Для запуска программы достаточно набрать java.exe ИмяКласса, где java - это название исполняемого файла, содержащего виртуальную Java-машину, а ИмяКласса - это имя public класса, содержащего метод main. Естественно, в текущем каталоге должен находится файл " ИмяКласса.class", а также другие файлы ".class" программы. Для удобства, все файлы ".class" программы часто объединяют в zip, cab или jar архивы: это не архивы как таковые, а просто способ собрать в единое целое программу, разбитую на отдельные файлы. В случае jar - архива запуск программы будет выглядеть как java.exe -jar ИмяАрхива.jar. В среде Windows можно упростить запуск программы, создав соответствующий ярлык. Можно также установить, что для запуска файлов, с расширением "jar" используется приложение "java.exe -jar", тогда можно будет просто запустить программу, щелкнув по ней два раза в проводнике.

10. Создания апплетов на языке Java

Любой класс, описывающий апплет, должен быть порожден от класса java.Applet. Пример: import java. Applet. *;

public class MyApplet extends Applet {/* свойства и методы апплета */}

Апплет выполняется не самостоятельно, а в контексте браузера. Поэтому выполнение апплета начинается не с метода main (апплет вообще не должен содержать метод main), а с методов, описывающих цикл жизни апплета. Апплет имеет жизненный цикл, состоящий из пяти этапов:

  1. Этап инициализации ( init ). Система создает и загружает объект апплета. Инициализация выполняется только один раз. Для того, чтобы выполнить свои действия на этом этапе, необходимо переопределить метод init ( ), унаследованный от класса java.Applet (пример см. ниже).

  2. Этап запуска (start). Система начинает выполнение апплета. В отличие от этапа инициализации, этап запуска на протяжении жизненного цикла может выполняться множество раз. Обычно в браузере, для ускорения работы, кэшируются предыдущие просмотренные страницы (например, 4 последние). Так что, уходя со страницы, пользователь не выгружает ее из памяти, а просто помещает в кэш. Нажатие кнопки

" назад" просто активизирует, имеющуюся в памяти страницу, и ее не надо будет снова загружать по сети. При каждой такой повторной активизации, метод Init не выполняется, а метод Start выполняется. Для выполнения своих команд на этом этапе, необходимо переопределить метод start ( ), унаследованный от класса java.Applet (пример см. ниже).

  1. Этап прорисовки (paint). Этот этап выполняется каждый раз, когда область отображения апплета должна быть прорисована на экране, т. е. сразу же после этапа запуска апплета, а также всякий раз, когда изображение апплета восстанавливается или изменяется. Это происходит, когда окно апплета освобожда­ется от перекрывающего его другого окна, когда пользователь, прокручивая страницу, возвращается к изображению апплета, или когда программа явно перерисовывает окно апплета (метод repaint ( ) ). Для выполнения своих команд на этом этапе, необходимо переопределить метод paint (Graphics g ) (пример см. ниже). Метод paint не описан в классе Applet. Класс Applet наследует этот метод от класса Component, который является суперклассом в длинной цепочке наследования, следующей от класса Applet к классам Panel, Container и Component. Для переопределения метода paint необходимо импортировать библиотеки java.awt.*, содержащие информацию о классе Graphics.

  2. Этап останова (stop). Система выполняет фазу останова, когда пользователь обращается к другой Web-странице, деактивизируя текущую страницу (но реально не выгружая ее, а оставляя в памяти). Этап остановки может выполняться множество раз. По умолчанию, на этом этапе апплет продолжает работу в фоновом режиме. Для выполнения своих команд на этом этапе, необходимо переопределить метод stop ( ), унаследованный от класса java.Applet (пример см. ниже).

выполняется только один раз и соответствует выгрузке web-страницы из памяти. Если апплет использовал ресурсы, которые перед уничтожением апплета необходимо освободить, то это нужно делать на этапе уничтожения. Для выполнения своих команд на этом этапе, необходимо переопределить метод destroy ( ), унаследованный от класса java.Applet (пример см. ниже).

Пример переопределения методов, описывающих жизненный цикл апплета:

import java. Applet. *; // необходимо для любого апплета

import java. awt. * ; // необходимо для переопределения метода paint

public class MyApplet extends Applet {

public void init ( ) { /* Здесь располагается ваш код этапа инициализации */ }

public void start ( ) { /* Здесь располагается ваш код этапа запуска */ }

public void paint ( Graphics g ) { /* Здесь располагается ваш код этапа перерисовки */ }

public void stop( ) { /* Здесь располагается ваш код этапа останова */ }

public void destroy( ) {/* Здесь располагается ваш код этапа уничтожения */ }

Обратите внимание на то, что для переопределения метода paint необходимо импортировать библиотеки java.awt.*, содержащие информацию о классе Graphics. Описанная в примере переменная g , указывающая на объект класса Graphics, позволяет выводить информацию и графику в области отображения апплета (или на так называемом холсте). Пример: Import java.net.URL; // Необходимо для загрузки рисунка

public void paint ( Graphics g ) { // Пример отображения текста

Font shrift = new Font ("TimesRoman", Font.BOLD+Font.ITALIC, 14); /* жирный курсив, 14-й шрифт Times.

Возможные варианты - шрифт: TimesRoman, Courier, Symbol, Dialog, Helvetica, аттрибуты: PLAIN, BOLD, ITALIC */ g.setFont (shrift); // установка шрифта для вывода в окне апплета

g.drawString ("Строка", 100, 50); // вывод текста в позиции x=100 y=50

// Пример отображения рисунка (поддерживаются только GIF и JPEG форматы) URL address= getDocumentBase (); //если рисунок находится в каталоге документа HTML URL address= getCodeBase (); //если рисунок находится в каталоге файла class апплета Image risunok = getImage (adress, "podkatalog / my_risunok.gif"); // загрузка рисунка g.drawImage (risunok, 100, 500, this); // отображение рисунка в позиции X:Y = 100:500

// Пример установки цвета

g.setColor(Color.white); /* Установка белого цвета. Возможны варианты:

white, lightGray, gray, darkGray, black, red, pink, orange, yellow, green, magneta, cyan, blue */ g.setColor(Color.green.darker( ) ); g.setColor(Color.green.brighter( ) ); //цвета темнее или ярче // существует также метод getColor ( ), позволяющий получить текущий цвет

// Пример установки цвета в формате RGB Color cvet = new Color (255, 192, 192); g.setColor (cvet);

// Пример установки цвета фона setBackground(Color.red);

// Пример отображения линии, прямоугольника и круга (элипса)

g.drawLine ( 100, 200, 400, 500 ); /* рисует линию от точки с координатами X:Y = 100:200, до точки с

координатами 400:500 */

g.drawRect (150, 100, 200, 120); /* не закрашенный прямоугольник: 150:100 - X:Y верхнего левого угла,

200 - ширина, 120 - высота */ g.fillRect (150, 100, 200, 120); // закрашенный прямоугольник g.clearRect (150, 100, 200, 120); // очищает прямоугольную область g.draw3DRect (150, 100, 200, 120); // не закрашенный объемный прямоугольник g.fill3DRect (150, 100, 200, 120); // закрашенный объемный прямоугольник

g.drawOval (150, 100, 200, 120) /* не закрашенный элипс: 150:100 - X:Y верхнего левого угла, 200 -

ширина, 120 - высота прямоугольника, в который будет вписан элипс */ g.fillOval (150, 100, 200, 120); // закрашенный элипс. Если ширина равна высоте - получится круг. g.drawRoundRect (150, 100, 200, 120, 10,15); /* прямоугольник с закругленными краями. 10:15 - отступы

от угла прямоугольника, с которых начинается скругление */ g.fillRoundRect (150, 100, 200, 120, 10,15); // закрашенный прямоугольник с закругленными краями. }

В примере приведены только простейшие возможности использования объекта Graphics. Для более детальной информации обращайтесь к книгам по Java.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]