Spec-Zone .ru
спецификации, руководства, описания, API
След: Развертывание
Урок: Апплеты Java
Раздел: Выполнение Больше С Апплетами
Отображение Специализированного Индикатора хода выполнения Загрузки
Домашняя страница > Развертывание > Апплеты Java

Отображение Специализированного Индикатора хода выполнения Загрузки

Апплет Java может вывести на экран специализированный индикатор хода выполнения загрузки, который показывает продвижение загрузки ресурсов апплета так же как другого апплета определенные данные..

Рассмотрите Погодный апплет и CustomProgress class, чтобы понять, как реализовать специализированный индикатор хода выполнения загрузки для апплета Java. С целью демонстрации большой и длительной загрузки файл JAR этого апплета был расширенным artifically и customprogress-applet.jnlp файл определяет дополнительные файлы JAR как ресурсы.

Разработка Специализированного Индикатора хода выполнения Загрузки

Чтобы разработать специализированный индикатор хода выполнения загрузки для Вашего апплета, создайте class, который реализует DownloadServiceListener интерфейс.

Конструктор загружающегося индикатора хода выполнения, который class изменит в зависимости от того, как UI должен быть выведен на экран и возможности, необходимые class. Следующие направляющие линии должны быть применены:

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 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 включать компиляции:

Загружающийся индикатор хода выполнения class теперь готов к употреблению. Следующий шаг должен определить этот файл JAR индикатора хода выполнения загрузки как индикатор хода выполнения загрузки Вашего апплета.

Определение Загружающегося Индикатора хода выполнения для Апплета

Чтобы определить специализированный индикатор хода выполнения загрузки для апплета, включайте следующую информацию в файл апплета JNLP:

Следующий фрагмент кода от 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 в веб-браузере, чтобы просмотреть загружающийся индикатор хода выполнения для Погодного апплета.


Отметьте:  

Чтобы просмотреть пример должным образом, Вы должны установить, по крайней мере, Java Комплект разработчика SE (JDK) 6 обновлений 21 выпуск.



Отметьте: Если Вы просмотрели этот апплет прежде, очистите свой кэш при использовании Панели управления Java прежде, чем просмотреть апплет снова. Вы не будете в состоянии видеть индикатор хода выполнения для ранее кэшируемого апплета.

Отметьте:  

Если Вы не видите, что пример работает, Вы, возможно, должны были бы включить интерпретатору JavaScript в своем браузере так, чтобы сценарий Инструментария Развертывания мог функционировать должным образом.


Интегрирование Загружающегося Индикатора хода выполнения С Апплетом UI

Можно также интегрировать загружающийся индикатор хода выполнения в UI апплета. Открытый AppletPage.html в веб-браузере, чтобы просмотреть загружающийся индикатор хода выполнения, интегрированный в Погодный апплет UI. Просмотрите IntegratedProgressIndicator.java class и встроенные комментарии для получения дополнительной информации.

Загрузите исходный код для следующих примеров, чтобы экспериментировать далее:

См. Настройку Загружающейся темы Опыта для получения дополнительной информации о настройке богатого Интернет-приложения (RIA) опыт загрузки.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Управление ДОМОМ Веб-страницы Апплета
Следующая страница: Запись Диагностики к Стандартному выводу и Потокам сообщений об ошибках