Пример 1.5. Апплет AppletWithParam



import java.applet.*;

import java.awt.*;

 

public class AppletWithParam extends Applet {

 

// Поля инициализируются значениями по умолчанию

private String m_String_1 = "First string";

private String m_String_2 = "Second string";

 

// Имена параметров, нужны для функции getParameter

private final String PARAM_String_1 = "String_1";

private final String PARAM_String_2= "String_2";

public AppletWithParam() {

// код конструктора

}

public String getAppletInfo() {

return "Name: AppletWithParam\r\n" +"";

}

// Методвозвращает ссылку на массив с описаниями

// параметров в виде { "Name", "Type", "Description" },

public String[][] getParameterInfo() {

String[][] info = {

{ PARAM_String_1, "String", "Parameter description" },

{ PARAM_String_2, "String", "Parameter description" },

};

return info;

}

public void init() {

// Чтение всех параметров и запись значений в поля класса

String param;

param = getParameter(PARAM_String_1);

if (param != null)    m_String_1 = param;

param = getParameter(PARAM_String_2);

if (param != null)    m_String_2 = param;

resize(320, 240);

}

public void destroy() { // код завершения работы апплета }

public void paint(Graphics g) {

g.drawString("Applet with Parameters",10, 20);

g.drawString(m_String_1,10, 40);

g.drawString(m_String_2,10, 60);

}

public void start() {

// код, который должен выполняться при запуске апплета

}

public void stop() {

// код, который должен работать при остановке апплета

}

// код, необходимый для работы апплета

}

 

Листинг HTML-файла:

<html>

<head>

<title>AppletWithParam</title>

</head>

<body>

<hr>

<applet

code=AppletWithParam.class name= AppletWithParam

 height=240 >

<param name=String_1 value="New first string">

<param name=String_2 value="New second string">

</applet>

<hr>

<a href=" AppletWithParam.java">The source.</a>

</body>

</html>

 

В методе paint() выведем строки, получаемые апплетом в виде параметров:

public void paint(Graphics g) {

g.drawString(m_String_1, 10, 20);

g.drawString(m_String_2, 10, 50);

}

 

URL-адреса, загрузка и вывод графических изображений. Создадим апплет ParamUrlImage, в котором через параметр апплета передается имя gif-файла, содержимое которого затем выводится в окне апплета. В каталог, где содержится HTML-файл, следует поместить файл с изображением simple.gif

 

Пример 1.6. Загрузка изображений

import java.net.URL;

 

public class ParamUrlImage extends Applet  {

Image Im;

private String m_FileName = "simple.gif";

private final String PARAM_String_1 = "fileName";

public String[][] getParameterInfo() {

String[][] info ={{ PARAM_String_1, "fileName", "name of file" },};

return info;

}

public void init() {

String param;

param = getParameter(PARAM_String_1);

if (param != null) m_FileName = param;

Im=getImage( getDocumentBase(),m_FileName);

resize(320, 240);

}

public void paint(Graphics g){

g.drawImage(Im,0,0,this);

g.drawString("Applet with Parameters",10, 20);}

}

Загрузить изображение можно при помощи URL-адреса на файл с изображением. URL, или Uniform Resource Locators (“унифицированная ссылка на ресурс”), - полный адрес объекта в сети WWW. В Java есть отдельный класс для обработки URL-адресов - java.net.URL. Самый простой способ создания объекта URL состоит в использовании конструктора URL(String add) с передачей ему  WWW-адреса. Фрагмент кода, где происходит реализация класса URL, может сгенерировать исключение MalformedURLException, если вдруг объект не может по какой-либо причине быть создан (например, строка не является URL-адресом). Компилятор требует обработать возможность возникновения исключительной ситуации при помощи блоков try-catch, например:

try {

URL addUrl=new URL("http:// ermak.cs.nstu.ru/");

} catch(MalformedURLException e) {

// код здесь выполняется, если строка URL неправильна

}

Загружать файлы можно только с того сервера, с которого был загружен сам апплет (это хорошая практика программирования).

Для получения URL на каталог, содержащий класс работающего апплета, используется метод getDocumentBase() класса Applet. Так имя загружаемого графического файла содержится в переменной m_FileName класса, то для загрузки графического изображения можно использовать следующий фрагмент, помещаемый в метод init() класса ParamUrlImage:

Image Im;

try {

Im=getImage(getDocumentBase(), m_FileName);

} catch(MalformedURLException e) {

 // код здесь выполняется, если строка URL неправильна

Im=createImage(0,0); // создание пустого изображения

}

Для загрузки изображения в режиме работы приложения можно использовать метод getToolkit:

Im = getToolkit().getImage(m_ FileName);

Класс Image определяет простое двумерное графическое изображение. Этот метод может импортировать изображения любого графического формата, поддерживаемого браузером (чаще всего используются форматы GIF и JPEG).

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

Для того, чтобы использовать двойную буферизацию, апплет должен включать в себя метод imageUpdate(), который он использует для контроля над тем, какую часть картинки метод drawImage() загрузил в память. После того, как все изображение оказывается в памяти, программа может выводить его быстро, без искажений, которые возникают при одновременной загрузке изображения и выводе его на экран.

 


Дата добавления: 2018-04-15; просмотров: 380; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!