Пример 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!