Java – Основы апплета
Апплет – это Java-программа, которая запускается в веб-браузере. Апплет может быть полнофункциональным Java-приложением, поскольку в его распоряжении находится весь Java API.
Между апплетом и автономным Java-приложением есть несколько важных отличий, включая следующие:
Апплет – это класс Java, который расширяет класс java.applet.Applet.
Метод main () не вызывается в апплете, и класс апплета не будет определять main ().
Апплеты предназначены для встраивания в HTML-страницу.
Когда пользователь просматривает HTML-страницу, которая содержит апплет, код для апплета загружается на компьютер пользователя.
JVM требуется для просмотра апплета. JVM может быть подключаемым модулем веб-браузера или отдельной средой выполнения.
JVM на компьютере пользователя создает экземпляр класса апплета и вызывает различные методы в течение жизни апплета.
Апплеты имеют строгие правила безопасности, которые применяются веб-браузером. Безопасность апплета часто упоминается как безопасность песочницы, сравнивая апплет с ребенком, играющим в песочнице с различными правилами, которые необходимо соблюдать.
Другие классы, в которых нуждается апплет, могут быть загружены в один файл Java Archive (JAR).
Апплет – это класс Java, который расширяет класс java.applet.Applet.
Метод main () не вызывается в апплете, и класс апплета не будет определять main ().
Апплеты предназначены для встраивания в HTML-страницу.
Когда пользователь просматривает HTML-страницу, которая содержит апплет, код для апплета загружается на компьютер пользователя.
JVM требуется для просмотра апплета. JVM может быть подключаемым модулем веб-браузера или отдельной средой выполнения.
JVM на компьютере пользователя создает экземпляр класса апплета и вызывает различные методы в течение жизни апплета.
Апплеты имеют строгие правила безопасности, которые применяются веб-браузером. Безопасность апплета часто упоминается как безопасность песочницы, сравнивая апплет с ребенком, играющим в песочнице с различными правилами, которые необходимо соблюдать.
Другие классы, в которых нуждается апплет, могут быть загружены в один файл Java Archive (JAR).
Жизненный цикл апплета
Четыре метода в классе Applet дают вам основу для построения любого серьезного апплета –
init – Этот метод предназначен для любой инициализации, необходимой для вашего апплета. Он вызывается после обработки тегов param внутри тега applet.
start – этот метод вызывается автоматически после того, как браузер вызывает метод init. Он также вызывается всякий раз, когда пользователь возвращается на страницу, содержащую апплет, после перехода на другие страницы.
stop – этот метод вызывается автоматически, когда пользователь покидает страницу, на которой находится апплет. Поэтому его можно вызывать повторно в одном и том же апплете.
уничтожить – этот метод вызывается только тогда, когда браузер выключается нормально. Поскольку апплеты предназначены для жизни на HTML-странице, обычно не следует оставлять ресурсы после того, как пользователь покидает страницу, содержащую апплет.
paint – вызывается сразу после метода start (), а также в любое время, когда апплет должен перерисовать себя в браузере. Метод paint () фактически унаследован от java.awt.
init – Этот метод предназначен для любой инициализации, необходимой для вашего апплета. Он вызывается после обработки тегов param внутри тега applet.
start – этот метод вызывается автоматически после того, как браузер вызывает метод init. Он также вызывается всякий раз, когда пользователь возвращается на страницу, содержащую апплет, после перехода на другие страницы.
stop – этот метод вызывается автоматически, когда пользователь покидает страницу, на которой находится апплет. Поэтому его можно вызывать повторно в одном и том же апплете.
уничтожить – этот метод вызывается только тогда, когда браузер выключается нормально. Поскольку апплеты предназначены для жизни на HTML-странице, обычно не следует оставлять ресурсы после того, как пользователь покидает страницу, содержащую апплет.
paint – вызывается сразу после метода start (), а также в любое время, когда апплет должен перерисовать себя в браузере. Метод paint () фактически унаследован от java.awt.
Апплет “Привет, мир”
Ниже приведен простой апплет с именем HelloWorldApplet.java –
Эти операторы импорта переносят классы в область действия нашего класса апплета –
- java.applet.Applet
- java.awt.Graphics
Без этих операторов импорта компилятор Java не распознал бы классы Applet и Graphics, на которые ссылается класс applet.
Апплет Класс
Каждый апплет является расширением класса java.applet.Applet . Базовый класс Applet предоставляет методы, которые производный класс Applet может вызывать для получения информации и услуг из контекста браузера.
К ним относятся методы, которые делают следующее –
- Получить параметры апплета
- Получить сетевое расположение файла HTML, который содержит апплет
- Получить сетевое расположение каталога класса апплета
- Распечатать сообщение о состоянии в браузере
- Получить изображение
- Получить аудиоклип
- Воспроизвести аудиоклип
- Изменить размер апплета
Кроме того, класс Applet предоставляет интерфейс, с помощью которого средство просмотра или браузер получает информацию об апплете и контролирует выполнение апплета. Зритель может –
- Запрос информации об авторе, версии и авторских правах апплета
- Запросить описание параметров, которые распознает апплет
- Инициализировать апплет
- Уничтожить апплет
- Запустить выполнение апплета
- Остановить выполнение апплета
Класс Applet предоставляет реализации по умолчанию для каждого из этих методов. Эти реализации могут быть переопределены при необходимости.
Апплет “Hello, World” завершен. Единственный переопределенный метод – метод рисования.
Вызов апплета
Апплет может быть вызван встраиванием директив в файл HTML и просмотром файла через средство просмотра апплета или браузер с поддержкой Java.
Тег является основой для встраивания апплета в файл HTML. Ниже приведен пример, который вызывает апплет «Hello, World» –
Примечание. Вы можете обратиться к тегу апплета HTML, чтобы узнать больше о вызове апплета из HTML.
Атрибут кода тега является обязательным. Он определяет класс Applet для запуска. Ширина и высота также необходимы для указания начального размера панели, в которой запускается апплет. Директива апплета должна быть закрыта тегом applet> .
Если апплет принимает параметры, значения можно передать для параметров, добавив теги между и applet> . Браузер игнорирует текст и другие теги между тегами апплета.
Браузеры без поддержки Java не обрабатывают и applet> . Поэтому все, что появляется между тегами, не связанными с апплетом, видно в браузерах без поддержки Java.
Зритель или браузер ищет скомпилированный код Java в месте нахождения документа. Чтобы указать другое, используйте атрибут codebase тега , как показано ниже –
Если апплет находится в пакете, отличном от пакета по умолчанию, в атрибуте кода необходимо указать удерживающий пакет, используя символ точки (.) Для разделения компонентов пакета / класса. Например –
Получение параметров апплета
В следующем примере показано, как заставить апплет реагировать на параметры настройки, указанные в документе. Этот апплет отображает рисунок шахматной доски черного и второго цвета.
Второй цвет и размер каждого квадрата могут быть указаны как параметры для апплета в документе.
CheckerApplet получает свои параметры в методе init (). Он также может получить свои параметры в методе paint (). Однако получить значения и сохранить настройки один раз в начале апплета, а не при каждом обновлении, удобно и эффективно.
Программа просмотра или браузер апплета вызывает метод init () каждого запускаемого им апплета. Зритель вызывает init () один раз, сразу после загрузки апплета. (Applet.init () реализован, чтобы ничего не делать.) Переопределите реализацию по умолчанию, чтобы вставить пользовательский код инициализации.
Метод Applet.getParameter () извлекает параметр по имени параметра (значение параметра всегда является строкой). Если значение является числовым или другими не символьными данными, строка должна быть проанализирована.
Ниже приведен скелет CheckerApplet.java –
Вот методы CheckerApplet init () и private parseSquareSize () –
Апплет вызывает parseSquareSize () для анализа параметра squareSize. parseSquareSize () вызывает метод библиотеки Integer.parseInt (), который анализирует строку и возвращает целое число. Integer.parseInt () генерирует исключение всякий раз, когда его аргумент недопустим.
Поэтому parseSquareSize () перехватывает исключения, а не позволяет сбою апплета при неправильном вводе.
Апплет вызывает parseColor () для разбора параметра цвета в значение Color. parseColor () выполняет серию сравнений строк, чтобы сопоставить значение параметра с именем предопределенного цвета. Вам нужно реализовать эти методы, чтобы этот апплет работал.
Указание параметров апплета
Ниже приведен пример файла HTML со встроенным CheckerApplet. HTML-файл определяет оба параметра для апплета с помощью тега .
Примечание. Имена параметров не чувствительны к регистру.
Преобразование приложения в апплеты
Легко преобразовать графическое Java-приложение (то есть приложение, которое использует AWT и которое можно запустить с помощью средства запуска Java-программ) в апплет, который можно встроить в веб-страницу.
Ниже приведены конкретные шаги для преобразования приложения в апплет.
Создайте HTML-страницу с соответствующим тегом для загрузки кода апплета.
Поставьте подкласс класса JApplet. Сделайте этот класс публичным. В противном случае апплет не может быть загружен.
Исключите основной метод в приложении. Не создавайте рамочное окно для приложения. Ваше приложение будет отображаться внутри браузера.
Переместите любой код инициализации из конструктора окна фрейма в метод init апплета. Вам не нужно явно создавать объект апплета. Браузер создает его для вас и вызывает метод init.
Удалить вызов setSize; для апплетов изменение размера производится с помощью параметров ширины и высоты в файле HTML.
Удалить вызов setDefaultCloseOperation. Апплет не может быть закрыт; он завершается при выходе из браузера.
Если приложение вызывает setTitle, исключите вызов метода. Апплеты не могут иметь строки заголовка. (Конечно, вы можете озаглавить саму веб-страницу, используя тег заголовка HTML.)
Не вызывайте setVisible (true). Апплет отображается автоматически.
Создайте HTML-страницу с соответствующим тегом для загрузки кода апплета.
Поставьте подкласс класса JApplet. Сделайте этот класс публичным. В противном случае апплет не может быть загружен.
Исключите основной метод в приложении. Не создавайте рамочное окно для приложения. Ваше приложение будет отображаться внутри браузера.
Переместите любой код инициализации из конструктора окна фрейма в метод init апплета. Вам не нужно явно создавать объект апплета. Браузер создает его для вас и вызывает метод init.
Удалить вызов setSize; для апплетов изменение размера производится с помощью параметров ширины и высоты в файле HTML.
Удалить вызов setDefaultCloseOperation. Апплет не может быть закрыт; он завершается при выходе из браузера.
Если приложение вызывает setTitle, исключите вызов метода. Апплеты не могут иметь строки заголовка. (Конечно, вы можете озаглавить саму веб-страницу, используя тег заголовка HTML.)
Не вызывайте setVisible (true). Апплет отображается автоматически.
Обработка событий
Апплеты наследуют группу методов обработки событий из класса Container. Класс Container определяет несколько методов, таких как processKeyEvent и processMouseEvent, для обработки определенных типов событий, а затем один метод catch-all, называемый processEvent.
Чтобы отреагировать на событие, апплет должен переопределить соответствующий специфичный для события метод.
Теперь давайте назовем этот апплет следующим образом –
Первоначально, апплет отобразит «инициализация апплета. Запуск апплета». Затем, как только вы нажмете внутри прямоугольника, будет отображаться «щелчок мышью».
Отображение изображений
Апплет может отображать изображения в формате GIF, JPEG, BMP и других. Чтобы отобразить изображение в апплете, вы используете метод drawImage (), найденный в классе java.awt.Graphics.
Ниже приведен пример, иллюстрирующий все шаги, чтобы показать изображения –
Теперь давайте назовем этот апплет следующим образом –
Воспроизведение аудио
Апплет может воспроизводить аудиофайл, представленный интерфейсом AudioClip в пакете java.applet. Интерфейс AudioClip имеет три метода, в том числе –
public void play () – воспроизводит аудиоклип один раз с начала.
public void loop () – Заставляет непрерывно воспроизводить аудиоклип.
public void stop () – останавливает воспроизведение аудиоклипа.
public void play () – воспроизводит аудиоклип один раз с начала.
public void loop () – Заставляет непрерывно воспроизводить аудиоклип.
public void stop () – останавливает воспроизведение аудиоклипа.
Чтобы получить объект AudioClip, вы должны вызвать метод getAudioClip () класса Applet. Метод getAudioClip () немедленно возвращает значение независимо от того, преобразуется ли URL в реальный аудиофайл. Аудиофайл не загружается до тех пор, пока не будет предпринята попытка воспроизвести аудиоклип.
Ниже приведен пример, иллюстрирующий все шаги для воспроизведения аудио –
Теперь давайте назовем этот апплет следующим образом –
Вы можете использовать test.wav на вашем ПК для проверки приведенного выше примера.
Java апплет не загружен что делать?
В статье, я расскажу как исправить ошибку Java апплет не загружен. На протяжении более чем десятилетия существовало большое количество веб-технологий. Так, например, для мультимедиа и простых игр использовался Flash, а для проведения операций, предъявляющих высокие требования к безопасности – ActiveX и Java. Но если разработанная Microsoft ActiveX уже давно канула в лету, то Java EE продолжает быть актуальной до сих пор. И дело не в том, что не существует достойных и более простых для конечного пользователя аналогов (они-то как раз появились несколько лет назад), проблема в том, что некоторые организации вложили десятки и сотни тысяч долларов в разработку приложений на основании этих технологий, и они просто так не могут от них отказаться. Именно поэтому, пользователи при попытке войти в определенный сервис могут видеть сообщение: Java апплет не загружен, что делать если вы повстречали его мы как раз и рассмотрим ниже.

При попытке войти в ВТБ24 онлайн, возникает ошибка
У некоторых клиентов ВТБ24 при попытки зайти в ВТБ24 онлайн возникает ошибка. Она как раз связана с тем, что Java апплет либо не установлен в системе, либо он отключен.

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

В первую очередь потребуется установить само программное обеспечение. Если оно загружено, но не включено, все равно скачайте – пусть будет установлена самая свежая версия. Для этого:
- Посетите страницу загрузки Java на официальном сайте https://java.com/ru/download/;
- Ресурс должен самостоятельно определить операционную систему и предложить ссылку на загрузку нужной версии ПО;
- Кликните на красную кнопку «Загрузить Java бесплатно»;
- После этого сразу начнется процесс загрузки;
- Запустите скаченный файл и проследуйте инструкциям;
- Перезагрузите браузер.
Следует отметить, что в Google Chrome (начиная с 42-й версии) апплет Java официально не поддерживается, так как корпорация считает соответствующую технологию устаревшей. Поэтому, чтобы воспользоваться Java запустите другой веб-браузер, например, FireFox.

Чтобы проблем с Java не возникало, выполните следующие действия:
- Запустите Firefox (если он отсутствует, то https://www.mozilla.org/ru/firefox/new/);
- Откройте меню программы и нажмите на «Дополнения»;
- Оказавшись на соответствующей странице, перейдите на вкладку «Плагины»;
- Напротив пункта «модуль платформы Java» будет переключатель – переведите его в положение «Всегда включать» (если он уже включен, то ничего не делайте);
- Можете перезагрузить браузер.
После выполнения указанных действий заходите на интересующий вас сайт – весь его функционал (конечно, если он не использует других сторонних технологий) будет работать, а ошибки с загрузкой Java апплет не возникнет.
Можно ли обойтись без Java
Если у вас нет необходимости использовать веб-приложения (как в случае в банковским клиентом ВТБ24), созданные на основании Java EE, тогда соответствующий апплет вам ни к чему. Постепенно даже крупные компании переходят на более актуальные сейчас для веб-а технологии, делая взаимодействие с функциями их сервисов намного проще для конечного пользователя.
37. Java – Основы работы с апплетами
Апплет – это программа Java, запускаемая в веб-браузере. Апплет может быть полнофункциональным Java-приложением, поскольку имеет в своем распоряжении весь прикладной программный интерфейс Java.
Между апплетом и автономным Java-приложением есть некоторые важные различия, в том числе следующие:
- Апплет это класс Java, расширяющий класс java.applet.Applet.
- Метод main() не вызывается в апплете, и класс Applet не определяет main().
- Динамические сетевые программы предназначены для встраивания в HTML-страницу.
- Если пользователь просматривает HTML-страницу, содержащую апплет, код для апплета загружается на компьютер пользователя.
- Для просмотра апплета требуется виртуальная машина Java. Виртуальная машина Java может быть либо подключаемым модулем веб-браузера, либо отдельной средой выполнения.
- Виртуальная машина Java на устройстве пользователя создает экземпляр класса Applet и вызывает различные методы в течение жизненного цикла апплета.
- Динамические сетевые программы имеют строгие правила безопасности, которые соблюдаются веб-браузером. Безопасность апплета часто называют службой безопасности изолированной программной среды, когда апплет сравнивают с ребенком, играющим в песочнице с различными правилами, которые необходимо соблюдать.
- Другие классы, которые нужны апплету, можно загрузить в одном файле архива Java (JAR).
Жизненный цикл апплета
Четыре метода в классе Applet определяют основу для создания любого серьезного апплета:
- init – этот метод предназначен для любой инициализации, необходимой для вашего апплета. Он вызывается после обработки тегов параметров внутри тега апплета.
- start – этот метод автоматически вызывается после того, как браузер вызывает метод init. Он также вызывается всякий раз, когда пользователь возвращается на страницу, содержащую апплет, после перехода на другие страницы.
- stop – этот метод автоматически вызывается, когда пользователь покидает страницу, на которой находится апплет. Поэтому его можно вызывать повторно в одном и том же апплете.
- destroy – этот метод вызывается только при обычном завершении работы браузера. Поскольку апплеты предназначены для размещения на странице HTML, обычно не следует оставлять ресурсы после того, как пользователь покидает страницу, содержащую апплет.
- paint – вызывается сразу после метода start(), а также каждый раз, когда апплету необходимо перерисовать свой образ в браузере. Метод paint() фактически унаследован от java.awt.
Динамическая сетевая программа «Привет, Мир»
Ниже приведен простой апплет HelloWorldApplet.java.
Эти операторы импорта переносят классы в область действия нашего класса Applet:
- java.applet.Applet
- java.awt.Graphics
Без этих операторов импорта компилятор Java не распознал бы классы Applet и Graphics, на которые ссылается класс Applet.
Класс Applet
Каждый апплет является расширением класса java.applet.Applet. Базовый класс Applet предоставляет методы, которые производный класс Applet может вызывать для получения информации и служб из контекста браузера.
К ним относятся методы, которые выполняют следующее:
- Получают параметры апплета.
- Получают сетевое расположение файла HTML, содержащего апплет.
- Получают сетевое расположение каталога классов апплета.
- Выводят статусное сообщение в браузере.
- Получают изображение.
- Получают аудиоклип.
- Воспроизводят аудиоклип.
- Изменяют размер апплета.
Кроме того, класс Applet предоставляет интерфейс, с помощью которого средство просмотра или браузер получает информацию об апплете и управляет его выполнением. Зритель может:
- Запросить информацию об авторе, версии и авторских правах апплета.
- Запросите описание параметров, которые распознают апплет.
- Инициализировать апплет.
- Удалить апплет.
- Запустить выполнение апплета.
- Остановить выполнение апплета.
Класс Applet предоставляет реализации по умолчанию для каждого из этих методов. При необходимости эти реализации могут быть отменены.
Динамическая сетевая программа Hello, World скомпилирована в данных условиях. Единственный переопределяемый метод – это метод отрисовки.
Вызов апплета
Динамическая сетевая программа может быть вызвана путем встраивания директив в файл HTML и просмотра файла через программу просмотра апплета или браузер с поддержкой Java.
Тег является основой для встраивания апплета в файл HTML. Ниже приведен пример, вызывающий апплет Hello, World.
Примечание. Вы можете обратиться к HTML-тегу апплета, чтобы узнать больше о вызове апплета из HTML.
Атрибут кода тега .
Если апплет принимает параметры, для параметров можно передать значения, добавив теги между . Браузер игнорирует текст и другие теги между тегами апплета.
Браузеры без поддержки Java не обрабатывают . Следовательно, все, что появляется между тегами, не связанное с апплетом, отображается в браузерах без поддержки Java.
Средство просмотра или браузер ищет скомпилированный код Java в том месте, где находится документ. Чтобы указать иное, используйте атрибут кодовой базы тега , как показано далее:
Если апплет находится в пакете, отличном от пакета по умолчанию, пакет хранения должен быть указан в атрибуте кода с использованием символа точки (.) для разделения компонентов пакета/класса. Например:
Получение параметров апплета
В следующем примере показано, как заставить апплет реагировать на параметры настройки, указанные в документе. Этот апплет отображает узор шахматной доски черного и второго цвета.
Второй цвет и размер каждого квадрата могут быть указаны в качестве параметров апплета в документе.
CheckerApplet получает свои параметры в методе init(). Он также может получать свои параметры в методе paint(). Однако получение значений и сохранение настроек один раз при запуске апплета, а не при каждом обновлении, более удобно и эффективно.
Средство просмотра апплета или браузер вызывает метод init() для каждого апплета, который он запускает. Программа просмотра вызывает init() один раз, сразу после загрузки апплета. (Applet.init() не выполняет никаких функций.) Переопределите реализацию по умолчанию, чтобы вставить пользовательский код инициализации.
Метод Applet.getParameter() выбирает параметр по имени параметра (значение параметра всегда является строкой). Если значение представлено числовыми или другими небуквенными данными, строку необходимо проанализировать.
Ниже приведен скелет программы CheckerApplet.java
Вот метод CheckerApplet’s init() и частный метод parseSquareSize():
Динамическая сетевая программа вызывает parseSquareSize() для анализа параметра squareSize. parseSquareSize() вызывает библиотечный метод Integer.parseInt(), который анализирует строку и возвращает целое число. Integer.parseInt() выдает исключение всякий раз, когда его аргумент недопустим.
Следовательно, parseSquareSize() перехватывает исключения, а не позволяет апплету останавливаться при неверном вводе.
Динамическая сетевая программа вызывает parseColor(), чтобы проанализировать параметр цвета в значение цвета. parseColor() выполняет серию сравнений строк, чтобы сопоставить значение параметра с именем предопределенного цвета. Вам необходимо реализовать эти методы, чтобы этот апплет работал.
Определение параметров апплета
Ниже приведен пример HTML-файла со встроенным CheckerApplet. Файл HTML определяет оба параметра апплета с помощью тега .
Примечание: в именах параметров не учитывается регистр.
Преобразование приложений в апплет
Графическое приложение Java (то есть приложение, которое использует графический интерфейс пользователя и которое можно запускать с помощью средства запуска программ Java) легко преобразовать в апплет, которую можно встроить в веб-страницу.
Ниже приведены конкретные шаги для преобразования приложения в апплет.
- Создайте HTML-страницу с соответствующим тегом для загрузки кода апплета.
- Предоставьте подкласс класса JApplet. Сделайте этот класс общедоступным. В противном случае апплет не может быть загружен.
- Исключите основной метод в приложении. Не создавайте рамочное окно для приложения. Ваше приложение будет отображаться внутри браузера.
- Переместите любой код инициализации из конструктора рамочного окна в метод инициализации апплета. Вам не нужно явно создавать объект апплета. Браузер создает его для вас и вызывает метод init.
- Удалите вызов setSize; для апплета размер задается с указанием параметров ширины и высоты в файле HTML.
- Удалите вызов setDefaultCloseOperation. Динамическую сетевую программу нельзя закрыть; она завершается, когда браузер закрывается.
- Если приложение вызывает setTitle, исключите вызов метода. Динамические сетевые программы не могут иметь заголовков. (Вы, конечно, можете присвоить заголовок самой веб-странице, используя тег заголовка HTML.)
- Не вызывайте setVisible(true). Динамическая сетевая программа отображается автоматически.
Обработка событий
Динамические сетевые программы наследуют группу методов обработки событий от класса Container. Класс Container определяет несколько методов, таких как processKeyEvent и processMouseEvent, для обработки определенных типов событий, а затем один универсальный метод, называемый processEvent.
Чтобы отреагировать на событие, апплет должен переопределить соответствующий метод для конкретного события.
Теперь давайте назовем этот апплет следующим образом:
Первоначально апплет будет отображать «инициализацию апплета. запуск апплета». Затем, как только вы щелкнете внутри прямоугольника, также будет отображаться «кнопка мышки нажата».
Отображение изображений
Динамическая сетевая программа может отображать изображения в формате GIF, JPEG, BMP и других форматах. Чтобы отобразить изображение в апплете, вы используете метод drawImage() из класса java.awt.Graphics.
Ниже приведен пример, иллюстрирующий все шаги для отображения изображений.
Теперь давайте назовем этот апплет следующим образом:
Воспроизведение аудио
Динамическая сетевая программа может воспроизводить аудиофайл, представленный интерфейсом AudioClip в пакете java.applet. Интерфейс AudioClip имеет три метода, в том числе:
- public void play() – воспроизводит аудиоклип один раз с самого начала.
- public void loop() – вызывает непрерывное воспроизведение аудиоклипа.
- public void stop() – останавливает воспроизведение аудиоклипа.
Чтобы получить объект AudioClip, необходимо вызвать метод getAudioClip() класса Applet. Метод getAudioClip() немедленно возвращается независимо от того, ссылается ли URL-адрес на фактический аудиофайл. Аудиофайл не загружается, пока не будет сделана попытка воспроизвести аудиоклип.
Ниже приведен пример, иллюстрирующий все шаги для воспроизведения звука.
Теперь давайте назовем этот апплет следующим образом:
Вы можете использовать test.wav на своем ПК, чтобы проверить приведенный выше пример.
Понятие апплета
В первом упоминании Java-технологии, наиболее перспективными выглядели, так называемые, апплеты (небольшие программы, исполняемые внутри броузера, и позволяющие сделать web-страницы более интерактивными). Вспомним Internet 1995 года, когда большинство web-страниц было статичными, а динамическое содержимое состояло из Perl-скриптов, исполняемых посредством CGI (Common Gateway Interface) интерфейса. Особо большого пространства для фантазии при проектировании сайтов не было, отсутствовала анимированная графика, а также какое-либо взаимодействие между пользователями. Такое взаимодействие требует для отправки информации web-серверу использование цикла запроса-ответа иного рода. В то же время, компания Netscape захватила рынок броузеров и первой получила лицензию на использование продукции Java для броузера Netscape Navigator. После этого компания Microsoft также подписала контракт и включила в Internet Explorer свою версию виртуальной машины для поддержки выполнения Java-программ.
Спустя несколько лет мир снова взглянул на апплеты, как на программы, встраиваемые в броузер. Разработчики снова стали использовать решения, базирующиеся на апплетах, так как Java Plug-in от Sun позволяет обновлять старую версию виртуальной машины, встроенную в Internet Explorer, до последней – Java Runtime Environment (JRE) – посредством Технологии Get Java.
Однако чем же все-таки является апплет? С технической стороны, апплетом может служить любой класс, расширяемый от класса Applet пакета java.applet. Это фактическое определение, однако не исчерпывающее. Если у вас имеется данный подкласс, вы можете добавить его к web-странице, разместив между тегами . После этого броузер будет загружать класс апплета и отображать его в назначенном пространстве.
Кроме этого у вас в распоряжении имеются методы init, start, stop и destroy. При рисовании и отображении областей применяется метод paint, так как Applet является подклассом java.awt.Component. Эти пять ключевых методов работают следующим образом:
init – вызывается при загрузке броузером основного класса Applet. Обычно у апплетов нет конструктора. Вместо этого используется код их единовременной инициализации.
start – вызывается в начале выполнения апплета при посещении пользователем страницы.
stop – вызывается для остановки выполнения аплета, когда пользователь покидает страницу, содержащую данный апплет.
destroy – вызывается в случае, если броузер должен завершить работу апплета. При этом ресурсы можно восстановить, однако у вас не будет над ними контроля.
paint – вызывается, когда броузер определяет, что область отображения апплета является неверной.
В качестве примера рассмотрим апплет, который при вызове каждого из пяти методов выводит информацию в консоль. Метод paint используется также для отображения сообщения на экране. При каждом вызове метода paint число увеличивается. При этом напрашивается вопрос о том, где же можно найти сообщения, записываемые в консоль. Ответ зависит от используемого броузера, а иногда и от его версии. В IE 6.0 Java Console находится в меню Tools. В рабочем цикле Microsoft и IE6 консоль расположен в меню View. А в броузерах Mozilla и Netscape 7.0, Java Console находится в меню Web Development (вложено в меню Tools).
Код апплета выглядит следующим образом:
import java.awt.*;
import java.applet.*;
public class FirstApplet extends Applet public void init () System.out.println ( «In init()» ) ;
>
public void start () System.out.println ( «In start()» ) ;
>
public void stop () System.out.println ( «In stop()» ) ;
>
public void destroy () System.out.println ( «In destroy()» ) ;
>
public synchronized void paint ( Graphics g ) System.out.println ( «In paint()» ) ;
g.drawString ( «Painting. » , 50 , 50 ) ;
>
>
Скомпилируйте апплет так же, как и любой другой исходный файл:
Если в файле не будет ошибок, будет создан класс FirstApplet.class.
Загрузка апплетов несколько отличается от загрузки автономных программ. Вместо обеспечения основного метода, исполняемого один раз при загрузке файла, загрузка апплета требует наличия HTML-файла. Именно в нем размещается тег . Вот как выглядит определение тега:
Для апплета, файл-загрузчик должен выглядеть так, как представлено ниже, и располагаться в той же директории, что и файл .class:
Атрибут code указывает имя загружаемого класса. Значение атрибутов width и height очевидно – при их помощи выставляется желаемый размер отображения апплета. Если файл класса апплета использует базовую директорию отличную от директории файла-загрузчика HTML, вам потребуется задать CODEBASE, позволяющий указать броузеру расположение базовой директории.
Поместите данный тег в любой HTML-файл и загрузите его в броузере.
Далее представлен пример метода, содержащего несколько локальных внутренних классов:
ПРИМЕЧАНИЕ: При использовании виртуальной машины Microsoft, Java консоль может отобразить ошибку NoClassDefFoundError. Если у вас не установлен Java Plug-in, то запуск апплета при помощи виртуальной машины Microsoft будет невозможным, так как с момента ее выпуска формат файла .class изменился. Для того чтобы сделать файл .class совместимым с более старыми версиями Microsoft VM, нельзя использовать программные средства новее версии 1.1.4, а компилировать следует при помощи опции –target следующим образом:
Подобной проблемы не возникнет, если у вас был установлен Java Plug-in. В этом случае вам потребуется просто скомпилировать исходный код и загрузить HTML-файл в своем броузере.
Запуск потоков в апплетах
Используя потоки в апплетах, необходимо учитывать несколько важных концепций:
Создавая апплет, вы расширяете класс Applet. Поэтому, для того чтобы использовать потоки, необходимо реализовать интерфейс Runnable или определить поток как внутренний класс Thread.
В методе start апплета создайте новый объект Thread (хотя объект thread также содержит метод start, он не совпадает с соответствующим методом апплета).
Из-за того, что реализуется интерфейс Runnable, вам необходимо обеспечить для класса метод run. Данный метод вызывается при запуске потока объектом thread для выполнения предназначенных ему операций.
Следующий апплет демонстрирует скроллинг текста, который «проходит» по своему собственному потоку, что позволяет вносить новый текст в текстовое поле во время его прокрутки. Если бы прокручивающийся текст не находился в отдельном потоке, то этот текст так бы загрузил ЦПУ, что вводить текст в поле было бы невозможным.
import java.applet.*;
import java.awt.*;
public class ExampleThreads extends Applet implements Runnable String text = «An example of text scrolling in its own thread.» ;
TextField field;
Thread thread;
boolean running;
public void init () // открыть init
Font fnt = new Font ( «Monospaced» , Font.BOLD, 26 ) ;
setFont ( fnt ) ;
FontMetrics fm = getFontMetrics ( fnt ) ;
int spaceWidth = fm.charWidth ( ‘ ‘ ) ;
int panelWidth = getSize () .width;
int numSpaces = panelWidth / spaceWidth + 1 ;
// Добавить необходимые пробелы в текст
for ( int i = 0 ; i < numSpaces; ++i ) text = text + ' ' ;
>
field = new TextField ( «Type Here» ) ;
add ( field ) ;
>
public void start () if ( thread == null ) thread = new Thread ( this ) ;
running = true ;
thread.start () ;
>
>
public void run () while ( running ) text = text.substring ( 1 , text.length ()) + text.charAt ( 0 ) ;
repaint () ;
try Thread.sleep ( 100 ) ;
>
catch ( InterruptedException e ) >
>
>
public void stop () if ( thread != null ) running = false ;
thread = null ;
>
>
public void paint ( Graphics g ) g.drawString ( text, 0 , 150 ) ;
Создайте HTML-страницу, как показано далее, после чего запустите ее в программе для просмотра апплетов или в броузере.
При запуске приложение должно выглядеть следующим образом:
Классы Applet, Image и MediaTracker
В представленной ранее статье описано, как посредством HTML-страницы передавать в апплет некоторую информацию, такую как местоположение файла класса, а также высота и размеры самого апплета. Кроме передачи информации о самом апплете и его исходном файле, можно также передавать необязательные параметры, используя для этой цели теги PARAM и метод getParameter класса Applet.
Например, вы хотите, чтобы в апплете отображалась графические или какие-либо другие объекты. Для того чтобы в апплете можно было использовать изображения, необходимо сначала связать каждое из них с абстрактным классом Image. Затем, путем передачи параметров через HTML-файл, можно задать информацию о количестве изображений и их именах.
Например, если вам необходимо отобразить в апплете четыре изображения, можно начать со строки:
У класса Image также есть методы getWidth и getHeight, которые возвращают значение размеров изображений в пикселях.
Тег PARAM имеет следующий синтаксис:
При помощи тега PARAM можно указывать апплету количество используемых изображений:
При помощи тегов PARAM укажем в HTML-файле имена файлов с изображениями:
Укажите апплету извлечь данные параметры при помощи метода getParameter. Строка String, передаваемая в метод getParameter, возвращает в HTML-тег значение названного параметра.
возвращает строку seahorse.jpg.
Для того чтобы узнать местонахождение встраиваемых ресурсов апплета вызовите метод getCodeBase, который возвратит их URL-адрес. Метода getImage позволяет извлечь объект изображения для выведения его на экран:
Осуществлять более сложные операции (такие как переключение между изображениями) можно при помощи класса MediaTracker, позволяющего управлять загружаемыми изображениями и отображать их статус. Класс MediaTracker является классом утилиты, используемым для отслеживания статуса многочисленных медиа-объектов.
Чтобы сконструировать объект MediaTracker, вызовите конструктор MediaTracker и передайте ему Component, который выполняет прорисовку изображений.
Если вы уже создали объект MediaTracker, задайте ему изображение, вызвав для этого метод addImage (Image image, int ID). Кроме того, каждому изображению может быть назначен уникальный идентификатор. Данный идентификатор контролирует порядок приоритетов, в котором выбираются изображения. С его помощью можно также идентифицировать уникальные наборы независимых изображений. Чем больше значение ID, тем выше приоритет загрузки изображений.
Для того чтобы определить, загружено ли изображение и готово ли оно к прорисовке, вызовите один из нижеперечисленных методов:
checkAll – проверяет, закончилась ли загрузка всех изображений, отслеживаемых данным объектом media tracker.
checkAll(boolean load) – проверяет, закончилась ли загрузка всех изображений, отслеживаемых данным объектом media tracker.
checkID(int id) – проверяет, закончилась ли загрузка всех изображений, отслеживаемых данным объектом media tracker, и помеченных специальным идентификатором.
statusAll(boolean load) – вычисляет и возвращает побитовый оператор включающего ИЛИ статуса всех media-объектов, отслеживаемых данным объектом media tracker.
waitForAll() – начинает загрузку всех картинок, отслеживаемых данным media tracker.
waitForAll(long ms) – начинает загрузку всех изображений, отслеживаемых данным объектом media tracker.
int status = tracker.statusALL () ;
if ( status & MediaTracker.COMPLETE ) ;
System.out.println ( «Images have been loaded» ) ;
В классе MediaTracker есть также другие методы и константы, полезные при работе с изображениями.
Applets reloaded
Ни для кого не секрет что Adobe Flash полноценно занял свою позицию в интернете. По общей статистики почти у 98% пользователей интернета установлен Flash плагин. Главное назначение которого — реализация «rich UI»(англ: богатый пользовательский интерфейс), проще говоря — красивый, динамический интерфейс. Однако в последнее время два гиганта решили пошатнуть его позицию — Microsoft и Sun. Microsoft выпустила технологию Silverligth, а Sun — решила нанести более серьезный удар. Выпустив сразу несколько продуктов с общей и довольно явной целью — пошатнуть Flash/Flex.
applets
Само по себе это не новое слово. А если более точно то довольно старое. Фактически возможность разработки «апплетов» появилась в далеком 1995 году. ПО прошествии 13 лет, технология фактически не приобрела массового характера. На самом деле это и не удивительно. Постоянные проблемы с безопасностью, постоянные проблемы с совместимостью в браузерах, проблемы с отображением апплетов, приводящие к зависанию браузера. Список недостатков можно продолжать довольно долго, и что самое интересное — сложно найти тех кто будет противоречить этому. Ken Russel(архитектор нового плагина) 28 августа 2008 года проводя презентацию для сотрудников Google четко дал понять что все эти проблемы были давно известны в Sun. Но больше всего времени отнял главный вопрос — «как все исправить?». Давайте посмотрим какой ответ они на него нашли.
По уверению Sun почти весь код плагина полностью переписан. Фактически не просто переписан, а сама архитектура плагина полностью перепроектирована. Теперь плагин почти полностью реализован на Java. Единственная платформо-зависемая часть это мост Java JavaScript. По заверениям компании им удалось разработать интерфейс который требует минимальное количество браузер-зависимых методов для полноценной реализации этого моста. Это позволило им решить проблемы которые имелись раньше относительно стабильности связи Java-JavaScript, которая приемлемо работала только в Firefox Mozilla. Действительно большому изменению подверглись внутренности плагина. Теперь JVM которая выполняет апплет полностью отделена от процесса бруазера и связана с ним через небольшой асинхронный клиент который находится в процессе браузера. Это призвано гарантировать что зависание апплета не приведет к зависанию самого браузера. Помимо этого появились новые возможности которые с одной стороны сильно развязывают руки разработчикам, а с другой добавляют вопросов. Например аплеты на одной странице могут(но не обязаны) исполнятся в разных JVM, разработчик теперь может передавать параметры командной строки для JVM для каждого апплета. Дополнительно каждый апплет может исполнятся конкретной версией JRE.
Например интересным следствием передачи параметров для JVM является возможность увеличить размер виртуальной памяти доступной апплету. Звучит неплохо неправда? Однако у автора напрашивается вопрос — теперь при открытии веб-страницы мы должны быть готовы к тому что она займет 2-3 GB оперативной памяти только потому, что разработчик решил перестраховаться и выделил по 512 Mb на каждом апплете которых здесь 6-7?
Однако этот факт решает самую глобальную проблему присущую апплетом — зависание браузера на время загрузки и старта апплета. По обещаниям разработчиков это теперь история. Из-за того что апплет находится в отдельном процессе все время необходимое для запуска апплета браузер ведет себя нормально, а как только апплет запускается он фактически вставляется в веб страницу. Вот только эксперименты показывают что в реалиях это не совсем так…
Теперь плагин полностью поддерживает новый способ размещения апплета на странице. Плагин полностью поддерживает JNLP который применяется в Java WebStart. На самом деле именно этот факт является наиболее значимым во всем обновлении. Это фактически развязывает руки программистам. Во первых апплет перестает быть просто апплетом, фактически это означает что один и тот же компонент может быть как апплетом так и просто приложением устанавливаемым через WebStart. Но даже это не самое главное новшество. А самым значительным является то что теперь можно использовать сторонние библиотеки и подгружать их для аплета. Например можно подключать JOGl. То есть в апплете можно полноценно пользоваться аппаратно ускоренным OpenGL. Но аппаратное ускорение можно использовать не только для 3D но также можно управлять аппаратным ускорением в 2D графике. Бесспорно доступность 3D графики на веб странице это интересная перспектива. Особенно это будет интересно для on-line игр. Например энтузиасты портировали знаменитую игру Quke 2 на Java и с новым плагином ее можно запускать прямо из браузера, проект теперь называется Jake 2(http://download.java.net/javadesktop/plugin2/jake2/). Также интересной разработкой является апплет разработанный NASA — это фактически аналог Google Earth, который можно свободно использовать для показа трехмерной карты планеты на веб странице. (http://download.java.net/javadesktop/plugin2/wwj/).
Интересным является также обратно совместимая модель встраивания апплета на странице. Фактически можно встроит апплет таким образом что он будет распознан и старым и новым плагином, более того можно запускать один апплет если установлен старый плагин, и другой апплет если установлен новый. Это все доступно стандартными средствами без необходимости динамически изменять код вставки апплета.
Интересным является то что теперь фактически каждый апплет можно просто «вытащить» из браузера мышкой и он действительно установится и запустится через Java WebStart. Причем это произойдет даже без перезапуска аплета. Это довольно интересный факт и бесспорно довольно удобный в теории. Но больше всего интересно как этим воспользуются наши «друзья» нечестные рекламщики которые используют малейшую возможность открыть всплывающие окно. Почему то у автора нет сомнения что они придумают способ как заставить пользователя «вытащить» апплет из браузера и полноценно развернутся на компьютере пользователя. Немаловажным фактом является то что апплет вытащенный из браузера уже является фактически «trusted», и ему доступны все данные пользователя под которым запущена JVM. Сам факт того что апплет может создавать свои окна уже кажется довольно опасным. Конечно разработчики подумали об этом и все окна созданные апплетом помечены звездочкой и дополнительной кнопкой «закрыть». Насколько это действительно эффективно оповещает простого пользователя об опасности — вопрос спорный.
Еще один интересный факт это новое хранилище данных доступное для апплетов. У этого хранилища очень ограниченный объем. Но это открывает интересные перспективы для «маркировки» пользовательского компьютера. Да этот функционал присутствует и в Flash, но все же, апплет получает возможность без каких либо уведомлений пользователя сохранять данные. И если довольно много пользователей знают как удалить данные сохраненные в браузере, то сколько знают как удалить кеш Java плагина?
Java FX
Новый плагин полноценно поддерживает JavaFX. Это новый скриптовый язык разработанный Sun для создания насыщенного динамического интерфейса. Фактически это прямой ответ на Flash. Язык действительно довольно простой и при этом функциональный. Апплеты созданные с использованием JavaFX действительно изначально кажутся просто Flash’ом и только при детальном взгляде можно заметить что это не так. Довольно интересным является то что по заверению Sun, JavaFX превосходит конкурентов по скорости.
Очень приятно что JavaFX является декларативным языком. Учитывая успех других декларативных языков(HTML, XHTML, XML) можно предположит успех и для него. При этом технология позволяет очень хорошо разделить работу программиста и дизайнера, что само по себе всегда представляет главную проблему в разработке веб приложений. Дополнительным плюсом является переносимость на разные платформы, и здесь речь идет не о программных платформах, а именно об аппаратных. В данный момент сюда входят мобильные устройства и телевизоры(фактически все устройства для которых доступна Java ME). Однако есть и основное различие между решениями Sun и Adobe, JavaFX ориентирована не просто на красивый интерфейс, а именно на интерфейсы с большим количеством анимации. И эта фраза несет в себе очень глубокий смысл. Фактически ядро рендеринга оптимизировано именно под анимацию, а не только под рендеринг сложных сцен.
Заключение
Sun довольно серьезно поработала над новыми технологиями, и их связью между собой. Технологии действительно продуманы и поэтому удобны в применении. Основной проблемой для них однако станет не их собственные недостатки, а именно то как относятся к апплетам разработчики. Именно поэтому само слово «апплет» Sun пытается нигде не использовать. Что по мнению автора действительно обосновано, так как фактически ничего общего с предыдущими реализациями не осталось. Теперь дело осталось исключительно за индустрией которая либо решит отказаться от предубеждений и тогда будущее для всех этих технологий обеспечено, либо заголовки со временем исчезнут и все останется так как оно и есть.
Русские Блоги
Если бы это было не потому, что компьютер был второго уровня или нужен какой-то чертов тест, я не думаю, что мне было бы все равно. В конце концов, этот продукт не используется. Зачем его использовать? Для экзамена.
Примечание: апплет используется с html или jsp и не может быть запущен один (конечно, вы можете использовать команду appletviewer или ide для запуска), конкретное использование будет отражено в коде.
Жизненный цикл апплета

- инициализация init() В этом методе вы можете установить некоторые начальные значения, такие как макет интерфейса. param Этот метод вызывается после обработки тега.
- начало start() : Вызов браузера завершен init() После метода метод вызывается автоматически. Этот метод вызывается всякий раз, когда пользователь возвращается с другой страницы на страницу, содержащую апплет.
- Стоп start() : Этот метод вызывается автоматически, когда пользователь удаляет со страницы, содержащей апплет. Поэтому этот метод может вызываться повторно в одном и том же апплете.
- уничтожить stop : Этот метод вызывается только когда браузер нормально закрыт. Поскольку апплеты действительны только на HTML-страницах, вы не должны пропустить ни одного ресурса после того, как пользователь покинет страницу, содержащую апплет.
- paint() : Этот метод вызывается сразу после метода start () или когда апплет необходимо перерисовать в браузере. Метод paint () фактически наследуется от java.awt.
, как показано
3. Первый апплет
Апплет должен быть запущен через html-файл с помощью браузера или команды appletviewer в командной строке. Использование браузера здесь слишком громоздко, поэтому в дальнейшем мы будем использовать командную строку для выполнения.
1). Создать HTML-файл.
Создайте новую папку с именем java_test_two / jht Hello.html Файл.
В приведенном выше коде, applet Тэг является обязательным, что означает, что здесь выполняется программа апплета, а код является именем файла программы, содержащим байт-код (если имя пакета есть, имя пакета необходимо добавить). Папка), вам нужно указать путь к корневому каталогу, используйте codebase Как это
Если мой файл байт-кода находится в каталоге приложения текущего каталога

Приведенный выше код — это класс, который мне нужно запустить. Если есть имя пакета, я должен добавить имя пакета. Что касается базы кода, это корневой каталог соответствующего пакета, каталог, как показано ниже.
можно увидеть Hello.class Файл находится в пакете приложения, а пакет приложения находится в java_test_two Средний, а наш Hello.html Он находится в каталоге jht. По сравнению с каталогом приложения, вам нужно сделать шаг назад, чтобы войти в каталог приложения. codebase Корневой каталог приложения, который java_test_two Так нужно ../ Родом из jht Отступить к java_test_two Справочник. Это хорошо code Используйте имя пакета плюс имя класса.
2). Создать апплет
Мы первые java_test_two Создайте простой апплет в папке, просто возьмите метку и выведите привет. Используя апплет,Должен наследовать java.applet.Applet Класс или есть javax.swing.JApplet категорияЯ здесь, чтобы обслуживать второй уровень компьютера, я унаследую java.applet.Applet Класс.
Разве приведенный выше код не очень прост?
3). Беги
Операция здесь должна добавить формат кодирования и -d . Кодировка использует utf-8, потому что это требует китайского языка, -d . Потому что есть package app Синтаксис для создания соответствующего каталога пакета.
После успешной компиляции app Создано в папке Hello.class Файл.
Затем войдите в папку jht и используйте

Команда для запуска этого апплета. ** Примечание, appletviewer Далее следуют html-файлы, а не файлы классов java!
вы найдете
4. Используйте теги для передачи значений в апплет
В HTML-файл мы можем продолжать добавлять Тег используется для передачи значений в апплет.
Метод настройки такой же, как указано выше, эта метка написана на Внутри тега.
Наш HTML-файл выглядит следующим образом
Итак, как мы можем получить это значение в коде Java?
В приведенном выше коде метод getParameter () используется для получения Значение в метке. Тогда поместите это в этикетку. Почему вы не вызвали getParameter через объект? Очевидно, это потому, что Hello наследует метод getParameter (), принадлежащий Applet. Тогда, потому что при запуске апплета, первое, что нужно сделать, это обработать Содержимое тега, а затем выполнить содержимое метода init (), поэтому выведите 12.
5. Два класса апплета
Выше мы объяснили начальный метод работы и основной код, я ускорю следующее, и не буду объяснять некоторые основные места.
Для удобства я больше не использую приведенную выше командную строку для запуска, я использую myEclispse Это быстрее написать и запустить напрямую. Если у вас нет такого идеала, как MyEclispse, сработает так называемый NetBeans, или вы просто берете командную строку и набираете appletviewer xxx.html Иди и начинай.
1. Классы, унаследованные java.applet.Applet и javax.swing.Applet
Java.lang.Object
Java.awt.Component // Компонент
Java.awt.Container // Контейнер
Java.awt.Panel // Панель
Java.applet.Applet: макет по умолчанию FlowLayout
Javax.swing.JApplet: макет по умолчанию BorderLayout
2. Добавление компонентов
Вы можете добавить компоненты непосредственно в контейнер Java.applet.Applet:
Формат оператора для добавления компонента в контейнер Javax.swing.JApplet:
Специальное примечание: JApplet — это контейнер Swing верхнего уровня, который использует неявную корневую панель (JRootPanel) в качестве единственного прямого потомка, а панель содержимого в корневой панели является родительской для всех компонентов JApplet, кроме строки меню. Из-за наличия панели содержимого обычно есть два способа добавить виджеты в JApplet:
1. Используйте метод getContentPane (), чтобы получить панель содержимого JApplet, а затем добавьте компоненты на панель содержимого:
2. Создайте промежуточный контейнер, такой как JPanel, добавьте компонент в контейнер, а затем используйте метод setContentPane (), чтобы установить контейнер в качестве панели содержимого JApplet:
После этого проблема, на которую мы все еще должны обратить внимание, состоит в том, чтобы четко различать контейнеры и компоненты (компоненты). Контейнеры нельзя добавлять непосредственно в контейнер.
Обычно используемые контейнеры — это Frame (оконный контейнер), Panel (панельный контейнер), Applet (контейнер java-апплета), Dialog (диалоговый контейнер) и т. д. Следует отметить, что форму нельзя напрямую добавить в апплет, и появится такая ошибка. java.lang.IllegalArgumentException: adding a window to a container
Четкое различие в приведенном выше коде java.applet.Applet и javax.swing.JApplet Первый может добавлять компоненты напрямую, а второй должен быть добавлен с помощью панелей. Что касается последнего, два метода были написаны. Давайте попробуем это.
Для первой добавленной формы виджета JApplet
В приведенном выше коде вы можете видеть, что макет BorderLayout , getContentpane Чтобы получить текущую панель JApplet, а затем добавить компонент JButton. (Каждый JApplet имеет панель по умолчанию)
Для второй формы добавления виджетов в JApplet
Приведенный выше код должен сначала установить панель, а затем установить эту панель в качестве собственной панели для JApplet. После запуска вы увидите, что макет становится FlowLayout 。
6.Applet для рисования текста и графики
Введение в класс графики
- Класс Graphics — это абстрактный класс, представляющий область отображения апплета, он является частью пакета java.awt и используется для рисования графики в области отображения апплета.
- Чтобы рисовать графику в окне апплета, вам не нужно создавать экземпляр Graphics. Метод paint () JApplet предоставляет объект Graphics. При использовании этого объекта результат будет отображаться в браузере.
- Система координат Java указывает, что верхний левый угол экрана — это начало координат (0,0), положительное значение x направляется вправо, а положительное значение y уменьшается. Все значения в пикселях являются целыми числами.
- Класс Graphics предоставляет методы для рисования множества изображений, текста, линий, кругов, многоугольников, изображений и т. Д.
Рисовать апплет
- Когда экран должен быть обновлен для отображения нового содержимого, это делается методами update () и paint ().
- update (): принимает объект класса Graphics в качестве параметра. Когда область апплета должна быть перекрашена, система windows начинает процесс рисования. Вызовите метод update (), чтобы очистить экран, а затем вызовите метод paint (). Затем экран обновляется системой.
- Метод paint (): возьмите объект Graphics в качестве параметра и нарисуйте изображение апплета в области рисования.
- Этот метод вызывается, когда вы хотите перерисовать область апплета. Метод repaint () должен вызывать метод update (), чтобы сигнализировать о необходимости обновления апплета.
- По умолчанию метод update () очищает область апплета и вызывает метод paint (). Если вы не хотите очищать область апплета, вы можете переопределить метод update ().
Используйте paint () и печатайте, чтобы понять жизненный цикл апплета
Первый вывод в консоль при запуске
Вывод в апплет Какая магия 3 раза 。
Когда вы нажимаете минимизировать
найдет дополнительную остановку 4
Когда вы максимизируете этот апплет снова
Когда вы закрываете этот апплет
С последними двумя мы можем видеть порядок вызовов функций, поэтому я не буду вдаваться в подробности.
В приведенном выше коде метод drawString в основном используется для рисования слов через объект Graphics в paint (), и указываются координаты слов.
Используйте repaint () и многопоточность для отображения часов в апплете
Эти часы выполнены в виде электронных часов, и если они сделаны из механических часов, их нужно нарисовать отдельно и больше не будет описываться.
Приведенный выше код легче понять. Если вы не видели его в многопоточности, пропустите этот код. После запуска вы увидите вызываемый метод в консоли. Это не будет описано здесь.
Установить размер шрифта и свойства цвета
- Класс Graphics, класс Font и класс FontMetrics объединяются для отображения текста на экране.
- Класс Font представляет данный шрифт, его тип текста и размер шрифта.
- Класс FontMetrics предоставляет информацию о шрифте, такую как фактическая высота и ширина данного символа. Мы не используем это ниже.
Приведенный выше код сначала создает экземпляр Font, затем передает объект g.setFont (), чтобы можно было установить шрифт, а затем нарисовать шрифт. Вот использование цвета.
Цвета в основном Color Класс, вы можете использовать следующие методы для создания цветов
Параметр конструктора — это значение rgb, которое представляет цвет. Конечно же Color Класс также предоставляет статические свойства для непосредственного получения цвета с использованием имени цвета.
Используйте методы объекта Graphics, чтобы установить цвет: g.setColor(Color.red);
Вы также можете установить текущий цвет апплета: setForeground (g.getColor ()); // Если цвет шрифта был установлен, setForeground не повлияет на шрифт
7. Интерфейс AppletContext
- использование getAppletContext() Получить контекст текущего апплета.
- использование showStatus() Способ изменения информации, отображаемой в строке состояния браузера.
- использование showDocument() Метод запрашивает браузер для отображения HTML-файла, соответствующего URL-адресу.
java
showDocument(URL);
showDocument (URL urlObj.String target); // target может быть окнами на всех уровнях - URL getCodeBase() Получить URL апплета из браузера
- URL getDocumentBase() Используется для получения URL-адреса HTML-файла, встроенного в апплет, из браузера.
Приведенный выше код не демонстрирует эффекта. Его можно увидеть только в браузере. Мой браузер полностью запретил апплет, и нет способа загрузить плагин. На втором уровне компьютера необходимо запомнить только эффекты вышеуказанных методов.
Загрузка изображения 8.applet
public URL getDocumentBase() Метод: возвращается сетевой путь веб-страницы, на которой находится файл апплета.
Мы можем попытаться это увидеть.
Выход выше file:/G:/java_test_two/jht/Hello.html , Это URL-адрес сети, а также местоположение нашего файла в сети. Какая польза от этой вещи? Посмотри вниз.
public Image getImage(URL url, String name) Этот метод может использоваться для получения изображения. Первый параметр в методе — это URL. Да, все, что вам нужно, это адрес изображения в сети. getDocumentBase() Иди получить getImage Go.

Ниже моя структура каталогов
Очевидно, что two.png находится в той же папке, что и Hello.html.
Изучаем Java
Первые два примера, представленные в этой книге, — это приложения, написанные на языке Java, т.е самостоятельные программы, аналогичные обычным машинозависимым программам.
С другой стороны, как упоминалось в предыдущей главе, ажиотаж вокруг языка Java был вызван, в основном, его возможностями выполнять апплеты под управлением Web-броузеров.
Мы хотим показать вам, как создать и выполнить апплет в режиме командной строки.
Затем мы загрузим этот апплет в программу для просмотра апплетов (appletviewer), входящую в состав пакета JDK.
В заключение мы отобразим его в Web-броузере.
Перейдите в каталог CoreJavaBook/vlch2/WelcomeApplet, а затем введите
следующие команды.
javac WelcomeApplet. java
appletviewer WelcomeApplet.html
На рис. 2.12 показано то, что вы увидите в окне программы для просмотра апплетов.

Рис. 2.12. Вид апплета WelcomeApplet в окне программы просмотра апплетов
Первая команда нам уже знакома — она вызывает компилятор языка Java. Он компилирует исходный текст апплета, содержащийся в файле WelcomeApplet. java, создавая файл байт-кода WelcomeApplet. class.
Однако на этот раз мы не запускаем интерпретатор языка Java. Вместо этого мы вызываем программу appletviewer. Эта программа специально предназначена для быстрого тестирования апплетов и входит в пакет Java SDK. Она работает не с файлом класса, а с файлом в формате HTML. Содержание файла WelcomeApplet.html показано в листинге 2.3.
Листинг 2.3
Файл WelcomeApplet.java
Если вы знаете язык HTML, то заметите некоторые стандартные команды языка HTML и дескриптор applet, приказывающие программе просмотра апплетов загрузить апплет, код которого содержится в файле WelcomeApplet, class. Программа аррletviewer игнорирует все дескрипторы языка HTML, за исключением дескриптора applet.
Другие дескрипторы языка HTML распознаются, когда файл в формате HTML просматривается броузером, поддерживающим язы к Java 2. Однако тут есть одна проблема.
Версии броузера Netscape 6, броузеры Mozilla и Opera поддерживают язык Java 2 как в среде Windows, так й на платформе Linux, хотя эта возможность является факультативной. Для того чтобы поэкспериментировать с апплетами, просто загрузите самую последнюю версию и убедитесь, она поддерживает Java.
Некоторые версии броузера Internet Explorer вообще не поддерживают язык Java. Другие версии поддерживают лишь очень старую виртуальную машину Java компании Microsoft (Java Virtual Machine). Если вы работаете с броузером Internet Explorer под управлением операционной системы Windows, зайдите на сайт http: //java. sun. com/get Java и загрузите программу Java Plug-In. Она добавит в броузер Internet Explorer возможности Java 2.
На платформе Macintosh под управлением операционной системы OS X возможности языка Java уже интегрированы в броузер Internet Explorer. В частности, на момент написания книги этот броузер поддерживал работу с пакетом J2SE версии 1.3. Система OS 9 поддерживает лишь устаревшую версию 1.1.
Если вы работаете с броузером Netscape 4, можете воспользоваться поддержкой языка Java 2, обеспечиваемой программой Java Plug-In. Однако при работе с апплетами, загружаемыми с помощью дескриптора applet, броузер будет по- прежнему использовать устаревшую виртуальную машину языка Java. Следовательно, придется переписать HTML-файл и вместо дескриптора applet использовать довольно неудобный дескриптор embed. Этот подход нельзя назвать удовлетворительным.
Если ваш броузер поддерживает платформу Java 2, попробуйте загрузить в него апплет. Для этого выполните следующие операции.
Запустите ваш броузер.
Выберите в меню опцию File -> Open File (или эквивалентную опцию).
Перейдите в каталог CoreJavaBook/vlch2/WelcomeApplet.
В диалоговом окне вы должны увидеть файлы WelcomeApplet .html и WelcomeAppletPlugin.html.
Загрузите файл, соответствующий вашей настройке. Броузер загрузит апплет вместе с окружающим его текстом. Он будет выглядеть примерно так, как показано на рис. 2.13.
Легко видеть, что это приложение действительно интерактивно и взаимодействует с Интернет. Нажмите на кнопку «Cay Horstmann». Апплет заставит броузер открыть Web- страницу Кея Хорстманна. Щелкните на кнопке «Gary Cornell». Апплет откроет окно для электронной почты, в котором уже указан адрес электронной почты Гари Корнелла.

Рис, 2.13. Запуск апплета WelcomeApplet с помощью броузера
Заметьте, что ни одна из этих кнопок не работает с программой просмотра аплетов. Эта программа не может посылать почту или отображать на экране Web-страницу, поэтому она просто проигнорирует ваши запросы. Программа просмотра апплетов хороша для тестирования изолированных апплетов, однако для реального взаимодействия апплета с Интернет и другими программами следует загрузить свой апплет в какой-либо броузер.
Апплет можно запустить из вашего текстового редактора или интегрированной среды разработки. При работе с редактором Emacs выберите в меню опцию JDE -> Run Applet.
При работе с редактором TextPad выберите опцию Tools -> Run Java Applet или используйте комбинацию клавиш . Перед вами откроется диалоговое окно, в котором будут представлены все HTML – файлы, хранящиеся в текущем каталоге. Если вы нажмете клавишу , редактор TextPad автоматически создаст минимальный HTML-файл.
В среде Sun ONE Studio нужно просто загрузить HTML-файл с дескрипторами апплета. Эта среда содержит небольшой броузер, выполняющий апплет на соответствующей Web-странице. В качестве альтернативы можно щелкнуть правой кнопкой мыши на файле с исходным текстом апплета и установить значение свойства «Executor» на закладке равным
«Applet Execution».
Код апплета Welcome показан в листинге 2.4. В данный момент его нужно лишь бегло просмотреть. К созданию апплетов мы еще вернемся в главе 10.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*,
import java.net.*;
public class WelcomeApplet extends JApplet
public void init()
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
JLabel label = new JLabel(getParameter(«greeting») ,
SwingConstants.CENTER);
label.setFont(new Font(«Serif», Font.BOLD, 18));
contentPane.add(label, BorderLayout.CENTER);
JPanel panel = new JPanel();
JButton cayButton = new JButton(«Cay Horstmann»);
cayButton.addActionListener(makeURLActionListener
(«http://www.horstmann.com»));
Jbutton garyButton = new Jbutton(«Gary Cornell»);
garyButton.addActionListener(makeURLActionListener
(«mailto:garyOthecornells.com»));
panel.add(garyButton);
contentPane.add(panel, BorderLayout.South);
>
public ActionListener makeURLActionListener(fina1 string u)
return new
ActionListener ()
public void actionPerformed(ActionEvent event)
try getAppleContext().showDocument(u);
>
catch(Exeption e) ( e.printStackTrace (); >
e. printStackTrace ();
>
>
> ;
В этой главе мы изучили механизмы компиляции и запуска программ, написанных на языке Java. Теперь мы готовы перейти к главе 3, в которой приступим к изучению языка Java.





