|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Апплет Java может вывести на экран специализированный индикатор хода выполнения загрузки, который показывает продвижение загрузки ресурсов апплета так же как другого апплета определенные данные..
Рассмотрите Погодный апплет и CustomProgress class, чтобы понять, как реализовать специализированный индикатор хода выполнения загрузки для апплета Java. С целью демонстрации большой и длительной загрузки файл JAR этого апплета был расширенным artifically и customprogress-applet.jnlp файл определяет дополнительные файлы JAR как ресурсы.
Чтобы разработать специализированный индикатор хода выполнения загрузки для Вашего апплета, создайте class, который реализует DownloadServiceListener интерфейс.
Конструктор загружающегося индикатора хода выполнения, который class изменит в зависимости от того, как UI должен быть выведен на экран и возможности, необходимые class. Следующие направляющие линии должны быть применены:
Object в качестве параметра. Object параметр может быть преобразован тип к экземпляру class.Object в качестве параметра как описано ранее.Object. Первый параметр может быть преобразован тип к экземпляру class и второй параметр могут быть преобразованы тип к экземпляру class.Программное обеспечение Плагина Java вызовет соответствующего конструктора в зависимости от возможностей программного обеспечения JRE на клиентской машине.
import javax.jnlp.DownloadServiceListener;
import java.awt.Container;
import java.applet.AppletStub;
import netscape.javascript.*;
// ...
public class CustomProgress implements DownloadServiceListener {
Container surfaceContainer = null;
AppletStub appletStub = null;
JProgressBar progressBar = null;
JLabel statusLabel = null;
boolean uiCreated = false;
public CustomProgress(Object surface) {
init(surface, null);
}
public CustomProgress(Object surface, Object stub) {
init(surface, stub);
}
public void init(Object surface, Object stub) {
try {
surfaceContainer = (Container) surface;
appletStub = (AppletStub) stub;
} catch (ClassCastException cce) {
// ...
}
}
// ...
}
Следующий фрагмент кода показывает, как создать UI для загружающегося индикатора хода выполнения. Используйте экземпляр class, чтобы получить параметры апплета. Вызовите JSObject.getWindow(null) метод, чтобы получить ссылку на родительскую веб-страницу апплета и вызвать код JavaScript на той странице.
private void create() {
JPanel top = createComponents();
if (surfaceContainer != null) {
// lay out loading progress UI in the given
// Container
surfaceContainer.add(top, BorderLayout.NORTH);
surfaceContainer.invalidate();
surfaceContainer.validate();
}
}
private JPanel createComponents() {
JPanel top = new JPanel();
// ...
// get applet parameter using an instance of the
// AppletStub class "tagLine" parameter specified
// in applet's JNLP file
String tagLine = "";
if (appletStub != null) {
tagLine = appletStub.getParameter("tagLine");
}
String lblText = "<html><font color=red size=+2>JDK
Documentation</font><br/>" +
tagLine + " <br/></html>";
JLabel lbl = new JLabel(lblText);
top.add(lbl, BorderLayout.NORTH);
// use JSObject.getWindow(null) method to retrieve
// a reference to the web page and make JavaScript
// calls. Duke logo displayed if displayLogo variable
// set to "true" in the web page
String displayLogo = "false";
JSObject window = JSObject.getWindow(null);
if (window != null) {
displayLogo = (String)window.getMember("displayLogo");
}
if (displayLogo.equals("true")) {
lbl = new JLabel();
ImageIcon logo = createImageIcon("images/DukeWave.gif", "logo");
lbl.setIcon(logo);
top.add(lbl, BorderLayout.EAST);
}
statusLabel = new JLabel(
"html><font color=green size=-2>" +
"Loading applet...</font></html>");
top.add(statusLabel, BorderLayout.CENTER);
// progress bar displays progress
progressBar = new JProgressBar(0, 100);
progressBar.setValue(0);
progressBar.setStringPainted(true);
top.add(progressBar, BorderLayout.SOUTH);
return top;
}
Создайте и обновите индикатор хода выполнения в следующих методах, основанных на overallPercent параметр. Эти методы регулярно вызываются программным обеспечением Плагина Java, чтобы передать продвижение загрузки апплета. Программное обеспечение Плагина Java будет всегда отправлять сообщение, когда загрузка и проверка допустимости ресурсов будут на 100 % полны.
public void progress(URL url, String version,
long readSoFar, long total,
int overallPercent) {
// check progress of download and update display
updateProgressUI(overallPercent);
}
public void upgradingArchive(java.net.URL url,
java.lang.String version,
int patchPercent,
int overallPercent) {
updateProgressUI(overallPercent);
}
public void validating(java.net.URL url,
java.lang.String version,
long entry,
long total,
int overallPercent) {
updateProgressUI(overallPercent);
}
private void updateProgressUI(int overallPercent) {
if (!uiCreated && overallPercent > 0
&& overallPercent < 100) {
// create custom progress indicator's
// UI only if there is more work to do,
// meaning overallPercent > 0 and
// < 100 this prevents flashing when
// RIA is loaded from cache
create();
uiCreated = true;
}
if (uiCreated) {
progressBar.setValue(overallPercent);
}
}
Скомпилируйте загружающийся индикатор хода выполнения class и создайте файл JAR со всеми ресурсами, должен был вывести на экран загружающийся индикатор хода выполнения. Включайте следующие файлы JAR в Ваш classpath включать компиляции:
<your JRE directory>/lib/javaws.jar<your JRE directory>/lib/plugin.jar – Этот файл JAR требуется, только если Ваш индикатор хода выполнения загрузки class использует JSObject.getWindow метод, чтобы вызвать код JavaScript в родительской веб-странице апплета.Загружающийся индикатор хода выполнения class теперь готов к употреблению. Следующий шаг должен определить этот файл JAR индикатора хода выполнения загрузки как индикатор хода выполнения загрузки Вашего апплета.
Чтобы определить специализированный индикатор хода выполнения загрузки для апплета, включайте следующую информацию в файл апплета JNLP:
jar тег с download="progress" атрибутprogress-class атрибут с полностью определенным именем загружающегося продвижения class.Следующий фрагмент кода от
<jnlp spec="1.0+"
codebase="http://docs.oracle.com/javase/tutorial/deployment"
href="">
<!-- ... -->
<resources>
<!-- ... -->
<jar
href="applet/examples/dist/applet_AppletWithCustomProgressIndicator"
main="true" />
<jar
href="applet/examples/dist/applet_CustomProgressIndicator/applet_CustomProgressIndicator.jar"
download="progress" />
</resources>
<applet-desc
name="customprogressindicatordemo.WeatherApplet"
main-class="customprogressindicatordemo.WeatherApplet"
progress-class="customprogressindicator.CustomProgress"
width="600"
height="200">
<param
name="tagLine"
value="Information straight from the horse's mouth!"/>
</applet-desc>
<!-- ... -->
</jnlp>
Разверните апплет в веб-странице. Открытый в веб-браузере, чтобы просмотреть загружающийся индикатор хода выполнения для Погодного апплета.AppletPage.html
Чтобы просмотреть пример должным образом, Вы должны установить, по крайней мере, выпуск.
Если Вы не видите, что пример работает, Вы, возможно, должны были бы включить интерпретатору JavaScript в своем браузере так, чтобы сценарий Инструментария Развертывания мог функционировать должным образом.
Можно также интегрировать загружающийся индикатор хода выполнения в UI апплета. Открытый
Загрузите исходный код для следующих примеров, чтобы экспериментировать далее:
См. Настройку Загружающейся темы Опыта для получения дополнительной информации о настройке богатого Интернет-приложения (RIA) опыт загрузки.