
- •Основы аплетов
- •Класс Applet
- •Архитектура аплета
- •Простые методы отображения аплетов
- •Требование перерисовки
- •Аплет с бегущим заголовком
- •Использование окна состояния
- •Пересылка параметров в аплеты
- •Усовершенствованный аплет заголовка
- •Методы getDocumentBase() getCodeBase()
- •Воспроизведение аудиоклипов. Интерфейс AudioClip
- •Технология Java Web Start
Усовершенствованный аплет заголовка
Передачу параметра можно использовать для усовершенствования показанного ранее аплета с бегущим заголовком. В предыдущей версии бегущее сообщение было жестко закодировано в аплете. Однако с помощью методики передачи параметра можно отображать различные сообщения при каждом прогоне аплета. Ниже показана версия аплета с бегущим заголовком, улучшенная таким способом. Обратите внимание, что в теге <applet> в верхней части исходного файла теперь определяется параметр param с именем message (сообщение), который имеет значение бегущей строки.
// Параметризованный заголовок.
import java.awt.*;
import java.applet.*;
/*
<applet code="ParamBanner" width=300 height=50>
<param name=message vaiue="Java makes the Web move!">
</applet>
*/
public class ParamBanner extends Applet implements Runnable {
String msg;
Thread t = null;
int state;
boolean stopFlag;
// Устанавливает цвета и инициализирует поток.
public void init() {
setBackground(Color.cyan);
setForeground(Color.red);
this.setSize(300, 300);
}
// Запустить поток.
public void start() {
msg = getParameter("message");
if(msg == null) msg = "Message not found.";
msg = " " + msg;
t = new Thread(this);
stopFlag = false;
t.start();
}
// Точка входа для потока, который выполняет заголовок.
public void run() {
char ch;
// Показать заголовок на экране.
for(;;) {
try {
repaint();
Thread.sleep(250);
ch = msg.charAt(0);
msg = msg.substring(1, msg.length());
msg += ch; if(stopFlag)
break;
} catch(InterruptedException e) {}
}
}
// Приостановить заголовок.
public void stop() {
stopFlag = true;
t = null;
}
// Показать заголовок на экране.
public void paint(Graphics g) {
g.drawString(msg, 50, 30);
}
}
Методы getDocumentBase() getCodeBase()
Часто необходимо создавать аплеты, которые будут явно загружать среду и текст. Java позволяет загружать в аплет данные из каталога, содержащего HTML-файл, запустивший аплет (т. е. из базы документа), и каталога, из которого был загружен class-файл аплета (т. е. из базы кода). Методы
getDocumentBase() и getCodeBase()
возвращают указанные каталоги в виде URL-объектов, описанных. Их можно сцепить со строкой, именующей загружаемый файл. Чтобы загружать другие файлы, нужно использовать другой метод— showDocument(), определенный в интерфейсе AppletContext. Рассмотрим аплет, иллюстрирующий использование этих методов:
// Отображение баз кода и документа.
import java.awt.*;
import java.applet.*;
import java.net.*;
/*
<applet code="Bases" width=300 height=50>
</applet>
*/
public class Bases extends Applet{
// Отобразить базы кода и документа.
public void paint(Graphics g) {
String msg;
URL url = getCodeBase(); // получить базу кода
msg = "Code base: " + url.toString();
g.drawString(msg, 10, 20);
url = getDocumentBase(); // получить базу документа
msg = "Document base: " + url.toString();
g.drawString(msg, 10, 40);
}
}