Spec-Zone .ru
спецификации, руководства, описания, API
|
Апплет Java может вывести на экран специализированный индикатор хода выполнения загрузки, который показывает продвижение загрузки ресурсов апплета так же как другого апплета определенные данные..
Рассмотрите Погодный апплет и CustomProgress
class, чтобы понять, как реализовать специализированный индикатор хода выполнения загрузки для апплета Java. С целью демонстрации большой и длительной загрузки файл JAR этого апплета был расширенным artifically и customprogress-applet.jnlp
файл определяет дополнительные файлы JAR как ресурсы.
Чтобы разработать специализированный индикатор хода выполнения загрузки для Вашего апплета, создайте class, который реализует DownloadServiceListener
интерфейс.
Конструктор загружающегося индикатора хода выполнения, который class изменит в зависимости от того, как UI должен быть выведен на экран и возможности, необходимые class. Следующие направляющие линии должны быть применены:
Object
в качестве параметра. Object
параметр может быть преобразован тип к экземпляру java.awt.Container
Object
в качестве параметра как описано ранее.Object
. Первый параметр может быть преобразован тип к экземпляру java.awt.Container
java.applet.AppletStub
Программное обеспечение Плагина 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 для загружающегося индикатора хода выполнения. Используйте экземпляр java.applet.AppletStub
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.Следующий фрагмент кода от
файл выводит на экран использование customprogress-applet.jnlp
download="progress"
и progress-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 апплета. Открытый
в веб-браузере, чтобы просмотреть загружающийся индикатор хода выполнения, интегрированный в Погодный апплет UI. Просмотрите AppletPage.html
class и встроенные комментарии для получения дополнительной информации.IntegratedProgressIndicator.java
Загрузите исходный код для следующих примеров, чтобы экспериментировать далее:
См. Настройку Загружающейся темы Опыта для получения дополнительной информации о настройке богатого Интернет-приложения (RIA) опыт загрузки.