Applet java апплеты (нет в html 2 0)


Изучаем Java

Вы здесь: Главная >> Java-учебник >> Что такое апплеты

Обучающие курсы:

Что такое апплеты в 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

This applet is from the book

Core Java by Cay Horstmann and
Gary Cornell, published by Sun Microsystems Press.

Понятие апплета

Содержание

Введение

В первом упоминании 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 spaceW > ( ‘ ‘ ) ;
int panelW > () .width;
int numSpaces = panelWidth / spaceWidth + 1 ;

// Добавить необходимые пробелы в текст
for ( int i = 0 ; 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-файле имена файлов с изображениями:

Илон Маск рекомендует:  Контроллеры в AngularJS

Укажите апплету извлечь данные параметры при помощи метода 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.

В классе MediaTracker есть также другие методы и константы, полезные при работе с изображениями.

Applet java апплеты (нет в html 2 0)

Апплеты — это маленькие приложения, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте, как часть документа HTML. Когда апплет прибывает к клиенту, его доступ к ресурсам ограничен.

Ниже приведен исходный код канонической программы HelloWorld, оформленной в виде апплета:

import java.awt.*;
import java.applet.*;
public class HelloWorldApplet extends Applet <
public void paint(Graphics g) <
g.drawString(«Hello World!», 20, 20);
> >

Этот апплет начинается двумя строками, которые импортируют все пакеты иерархий java.applet и java.awt. Дальше в нашем примере присутствует метод paint, замещающий одноименный метод класса Applet. При вызове этого метода ему передается аргумент, содержащий ссылку на объект класса Graphics. Последний используется для прорисовки нашего апплета. С помощью метода drawString, вызываемого с этим объектом типа Graphics, в позиции экрана (20,20) выводится строка “Hello World”.

Для того, чтобы с помощью браузера запустить этот апплет, нам придется написать несколько строк html-текста.

Вы можете поместить эти строки в отдельный html-файл ( HelloWorldApplet.html ) , либо вставить их в текст этой программы в виде комментария и запустить программу appletviewer с его исходным текстом в качестве аргумента.

CODE = appletFile
OBJECT = appletSerialFile
W > HEIGHT = pixels
[ARCHIVE = jarFiles]
[CODEBASE = codebaseURL]
[ALT = alternateText]
[NAME = appletInstanceName]
[ALIGN = alignment]
[VSPACE = pixels]
[HSPACE = pixels]
>
[ ]
[ ]
[HTML-текст, отображаемый при отсутствии поддержки Java]

CODE — обязательный атрибут, задающий имя файла, в котором содержится оттранслированный код апплета. Имя файла задается относительно codebase, то есть либо от текущего каталога, либо от каталога, указанного в атрибуте CODEBASE. В Java 1.1 вместо этого атрибута может использоваться атрибут OBJE CT.

Указывает имя файла, содержащего сериализованный апплет, из которого последний будет восстановлен. При запуске определяемого таким образом апплета должен вызываться не метод init(), а метод start(). Для апплета необходимо задать либо атрибут CODE, либо атрибут OBJECT, но задавать эти атрибуты одновременно нельзя.

WIDTH и HEIGHT — обязательные атрибуты, задающие начальный размер видимой области апплета.

Задает список jar-файлов (разделяется запятыми), которые предварительно загружаются в Web-броузер. В этих архивных файлах могут содержаться файлы классов, изображения, звуки и любые другие ресурсы, необходимые апплету. Для создания архивов используется утилита JAR, синтаксис вызова которой напоминает вызов команды TAR Unix (подробное описание утилит смотрите в Приложении 1 ) :

c:\> jar cf soundmap.jar *.class image.gif sound.wav

Очевидно, что передача сжатых jar-файлов повышает эффективность работы. Поэтому многие средства разработки (Lotus JavaBeans, Borland JBuilder) уже имеют средства для публикации апплетов в виде jar-файлов.

CODEBASE — необязательный атрибут, задающий базовый URL кода апплета, являющийся каталогом, в котором будет выполняться поиск исполняемого файла апплета (задаваемого в признаке CODE). Если этот атрибут не задан, по умолчанию используется каталог данного HTML-документа. CODEBASE не обязательно должен указывать на тот же узел, с которого был загружен H TML-документ.

Признак ALT — необязательный атрибут, задающий короткое текстовое сообщение, которое должно быть выведено в том случае, если используемый браузер распознает синтаксис тега , но выполнять апплеты не умеет. Это не то же самое, что HTML-текст, который можно вставлять между и для браузеров, вообще не поддерживающих апплетов.

NAME — необязательный атрибут, используемый для задания имени для данного экземпляра апплета. Присвоение апплетам имен необходимо для того, чтобы другие апплеты на этой же странице могли находить их и общаться с ними. Для того, чтобы получить доступ к подклассу MyApplet класса Applet с именем “Duke”, нужно написать:

MyApplet a = getAppletContext().getApplet(«Duke»);

После того, как вы получили таким образом дескриптор именованного экземпляра апплета, вы можете вызывать его методы точно так же, как это делается с любым другим объектом.

ALIGN — необязательный атрибут, задающий стиль выравнивания апплета. Этот атрибут трактуется так же, как в теге IMG, возможные его значения — LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM.

Эти необязательные атрибуты задают ширину свободного пространства в пикселях сверху и снизу апплета (VSPACE), и слева и справа от него (HSPACE). Они трактуются точно так же, как одноименные атрибуты тега IMG.

PARAM NAME = appletAttribute1 VALUE = value1

Этот тег дает возможность передавать из HTML-страницы апплету необходимые ему аргументы. Апплеты получают эти атрибуты, вызывая метод getParameter(), описываемый ниже.


Метод getParameter возвращает значение типа String, соответствующее указанному имени параметра. Если вам в качестве параметра требуется значение какого-либо другого типа, вы должны преобразовать строку-параметр самостоятельно. Вы сейчас увидите некоторые примеры использования метода getParameter для извлечения параметров из приведенного ниже примера:

Ниже показано, как извлекается каждый из этих параметров:

String FontName = getParameter(«fontName»);
String FontSize = Integer.parseInt(getParameter(«fontSize»));
String Leading = Float.valueOf(getParameter(«leading»));
String Pa ));

getDocument Base и getCodeBase

Возможно, Вы будете писать апплеты, которым понадобится явно загружать данные и текст. Java позволяет апплету загружать данные из каталога, в котором располагается HTML-документ, запустивший апплет (база документа — getDocumentBase), и из каталога, из которого был загружен class-файл с кодом апплета (база кода — getCodeBase).

AppletContext и showDocument

AppletContext представляет собой средства, позволяющие получать информацию об окружении работающего апплета. Метод showDocument приводит к тому, что заданный его параметром документ отображается в главном окне браузера или фрейме.

Отладочную печать можно выводить в два места: на консоль и в статусную строку программы просмотра апплетов. Для того, чтобы вывести сообщение на консоль, надо написать:

System.out.println(“Hello there, welcome to Java”);

Сообщения на консоли очень удобны, поскольку консоль обычно не видна пользователям апплета, и в ней достаточно места для нескольких сообщений. В браузере Netscape консоль Java доступна из меню Options, пункт “Show Java Console”.

Метод showStatus выводит текст в статусной области программы арpletviewer или браузера с поддержкой Java. В статусной области можно вывести только одну строку сообщения.

Порядок инициализации апплета

Ниже приведен порядок, в котором вызываются методы класса Applet, с пояснениями, нужно или нет переопределять данный метод.

Метод init вызывается первым. В нем вы должны инициализировать свои переменные.

Метод start вызывается сразу же после метода init. Он также используется в качестве стартовой точки для возобновления работы после того, как апплет был остановлен. В то время, как метод init вызывается только однажды — при загрузке апплета, start вызывается каждый раз при выводе HTML-документа, содержащего апплет, на экран. Так, например, если пользователь перейдет к новой WWW-странице, а затем вернется назад к странице с апплетом, апплет продолжит работу с метода start.

Метод paint вызывается каждый раз при повреждении апплета. AWT следит за состоянием окон в системе и замечает такие случаи, как, например, перекрытие окна апплета другим окном. В таких случаях, после того, как апплет снова оказывается видимым, для восстановления его изображения вызывается метод paint.

Используемый по умолчанию метод update класса Applet сначала закрашивает апплет цветом фона по умолчанию, после чего вызывает метод paint. Если вы в методе paint заполняете фон другим цветом, пользователь будет видеть вспышку цвета по умолчанию при каждом вызове метода update — то есть, всякий раз, когда вы перерисовываете апплет. Чтобы избежать этого, нужно заместить метод update. В общем случае нужно выполнять операции рисования в методе update, а в методе paint, к которому будет обращаться AWT, просто вызвать update.

Метод stop вызывается в тот момент, когда браузер покидает HTML-документ, содержащий апплет. При вызове метода stop апплет еще работает. Вы должны использовать этот метод для приостановки тех подпроцессов, работа которых необязательна при невидимом апплете. После того, как пользователь снова обратится к этой странице, вы должны будете возобновить их работу в методе start.

Метод destroy вызывается тогда, когда среда (например, браузер Netscape) решает, что апплет нужно полностью удалить из памяти. В этом методе нужно освободить все ресурсы, которые использовал апплет.

Возвратимся к апплету HelloWorldApplet. В нем мы заместили метод paint, что позволило апплету выполнить отрисовку. В классе Applet предусмотрены дополнительные методы рисования, позволяющие эффективно закрашивать части экрана. При разработке первых апплетов порой непросто понять, почему метод update никогда не вызывается. Для инициации update предусмотрены три варианта метода repaint.

Метод repaint используется для принудительного перерисовывания апплета. Этот метод, в свою очередь, вызывает метод update. Однако, если ваша система медленная или сильно загружена, метод update может и не вызваться. Близкие по времени запросы на перерисовку могут объединяться AWT, так что метод update может вызываться спорадически. Если вы хотите добиться ритмичной смены кадров изображения, воспользуйтесь методом repaint(time) — это позволит уменьшить количество кадров, нарисованных не вовремя.

Илон Маск рекомендует:  Преобразование XML в массив или объект

Вы можете вызывать метод repaint, устанавливая крайний срок для перерисовки (этот период задается в миллисекундах относительно времени вызова repaint).

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

repaint(time, x, у, w, h)

Этот метод — комбинация двух предыдущих.

Задание размеров графических изображений.

Графические изображения вычерчиваются в стандартной для компьютерной графики системе координат, в которой координаты могут принимать только целые значения, а оси направлены слева направо и сверху вниз. У апплетов и изображений есть метод size, который возвращает объект Dimension. Получив объект Dimension, вы можете получить и значения его переменных width и height:


Dimension d = size();
System.out.println(d. width + «,» + d.height);

Простые методы класса Graphics

У объектов класса Graphics есть несколько простых функций рисования. Каждую из фигур можно нарисовать заполненной, либо прорисовать только ее границы. Каждый из методов drawRect, drawOval, fillRect и fillOval вызывается с четырьмя параметрами: int x, int y, int width и int height. Координаты х и у задают положение верхнего левого угла фигуры, параметры width и height определяют ее границы.

drawline(int x1, int у1, int х2, int у2)

Этот метод вычерчивает отрезок прямой между точками с координатами (х1,у1) и (х2,у2). Эти линии представляют собой простые прямые толщиной в 1 пиксель. Поддержка разных перьев и разных толщин линий не предусмотрена.

drawArc и fillArc

Форма методов drawArc и fillArc следующая:

drawArc(int x, int у, int width, int height, int startAngle, int sweepAngle)

Эти методы вычерчивают (fillArc заполняет) дугу, ограниченную прямоугольником (x,y,width, height), начинающуюся с угла startAngle и имеющую угловой размер sweepAngle. Ноль градусов соответствует положению часовой стрелки на 3 часа, угол отсчитывается против часовой стрелки (например, 90 градусов соответствуют 12 часам, 180 — 9 часам, и так далее).

drawPolyson и fillPolyson

Прототипы для этих методов:

drawPolygon(int[], int[], int)

fillPolygon(int[], int[], int)

Метод drawPolygon рисует контур многоугольника (ломаную линию), задаваемого двумя массивами, содержащими х и у координаты вершин, третий параметр метода — число пар координат. Метод drawPolygon не замыкает автоматически вычерчиваемый контур. Для того, чтобы прямоугольник получился замкнутым, координаты первой и последней точек должны совпадать.

Цветовая система AWT разрабатывалась так, чтобы была возможность работы со всеми цветами. После того, как цвет задан, Java отыскивает в диапазоне цветов дисплея тот, который ему больше всего соответствует. Вы можете запрашивать цвета в той семантике, к которой привыкли — как смесь красного, зеленого и голубого, либо как комбинацию оттенка, насыщенности и яркости. Вы можете использовать статические переменные класса Color.black для задания какого-либо из общеупотребительных цветов — black, white, red, green, blue, cyan, yellow, magenta, orange, pink, gray, darkGray и lightGray.

Для создания нового цвета используется один из трех описанных ниже конструкторов.

Color(int, int, int)

Параметрами для этого конструктора являются три целых числа в диапазоне от 0 до 255 для красного, зеленого и голубого компонентов цвета.

У этого конструктора — один целочисленный аргумент, в котором в упакованном виде заданы красный, зеленый и голубой компоненты цвета. Красный занимает биты 16-23, зеленый — 8-15, голубой — 0-7.

Color(float, float, float)

Последний из конструкторов цвета, Color(float, float, float), принимает в качестве параметров три значения типа float (в диапазоне от 0.0 до 1.0) для красного, зеленого и голубого базовых цветов.

Методы класса Color

HSBtoRGB(float, float, float)
RGBtoHSB(int, int, int, float[1)

HSBtoRGB преобразует цвет, заданный оттенком, насыщенностью и яркостью (HSB), в целое число в формате RGB, готовое для использования в качестве параметра конструктора Color(int). RGBtoHSB преобразует цвет, заданный тремя базовыми компонентами, в массив типа float со значениями HSB, соответствующими данному цвету.

Цветовая модель HSB (Hue-Saturation-Brightness, оттенок-насыщенность-яркость) является альтернативой модели Red-Green-Blue для задания цветов. В этой модели оттенки можно представить как круг с различными цветами (оттенок может принимать значения от 0.0 до 1.0, цвета на этом круге идут в том же порядке, что и в радуге — красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый). Насыщенность (значение в диапазоне от 0.0 до 1.0) — это шкала глубины цвета, от легкой пастели до сочных цветов. Яркость — это также число в диапазоне от 0.0 до 1.0, причем меньшие значения соответствуют более темным цветам, а большие — более ярким.

getRedQ, getGreenO, setBlue()

Каждый из этих методов возвращает в младших восьми битах результата значение соответствующего базового компонента цвета.


Этот метод возвращает целое число, в котором упакованы значения базовых компонентов цвета, причем

setPaintMode() и set XORMode(Color)

Режим отрисовки paint — используемый по умолчанию метод заполнения графических изображений, при котором цвет пикселей изменяется на заданный. XOR устанавливает режим рисования, когда результирующий цвет получается выполнением операции XOR (исключающее или) для текущего и указанного цветов (особенно полезно для анимации).

Библиотека AWT обеспечивает большую гибкость при работе со шрифтами благодаря предоставлению соответствующих абстракций и возможности динамического выбора шрифтов. Вот очень короткая программа, которая печатает на консоли Java имена всех имеющихся в системе шрифтов.

В предыдущих примерах использовался метод drawString(String, x, у). Этот метод выводит строку с использованием текущих шрифта и цвета. Точка с координатами (х,у) соответствует левой границе базовой линии символов, а не левому верхнему углу, как это принято в других методах рисования. Для того, чтобы понять, как при этом располагается описывающий строку прямоугольник, прочтите раздел о метрике шрифта в конце этой главы.

Конструктор класса Font создает новый шрифт с указанным именем, стилем и размером в пунктах:

Font StrongFont = new Font(«Helvetica», Font.BOLD|Font.ITALIC, 24);

В настоящее время доступны следующие имена шрифтов: Dialog, Helvetica, TimesRoman, Courier и Symbol. Для указания стиля шрифта внутри данного семейства предусмотрены три статические переменные. — Font.PLAIN, Font.BOLD и Font.ITALIC, что соответствует обычному стилю, курсиву и полужирному.

Теперь давайте посмотрим на несколько дополнительных методов.

getFamily и getName

Метод getFamily возвращает строку с именем семейства шрифтов. С помощью метода getName можно получить логическое имя шрифта.

Этот метод возвращает целое число, представляющее собой размер шрифта в пунктах.

Этот метод возвращает целое число, соответствующее стилю шрифта. Полученный результат можно побитово сравнить со статическими переменными класса Font: — PLAIN, BOLD и ITALIC.

isBold, isItalic, isPlain

Эти методы возвращают true в том случае, если стиль шрифта — полужирный (bold), курсив (italic) или обычный (plain), соответственно.

Позиционирование и шрифты : FontMetrics

В Java используются различные шрифты, а класс FontMetrics позволяет программисту точно задавать положение выводимого в апплете текста. Прежде всего нам нужно понять кое-что из обычной терминологии, употребляемой при работе со шрифтами:

  • Высота (height) — размер от верхней до нижней точки самого высокого символа в шрифте.
  • Базовая линия (baseline) — линия, по которой выравниваются нижние границы символов (не считая снижения (descent)).
  • Подъем (ascent) — расстояние от базовой линии до верхней точки символа.
  • Снижение (descent) — расстояние от базовой линии до нижней точки символа.

Ниже приведены некоторые методы класса FontMetrics:

Этот метод возвращает длину заданной строки для данного шрифта.

Эти методы возвращают ширину указанного массива байтов для текущего шрифта.

getAscent, getDescent, getHeight

Эти методы возвращают подъем, снижение и ширину шрифта. Сумма подъема и снижения дают полную высоту шрифта. Высота шрифта — это не просто расстояние от самой нижней точки букв g и у до самой верхней точки заглавной буквы Т и символов вроде скобок. Высота включает подчеркивания и т.п.

getMaxAscent и getMaxDescent

Эти методы служат для получения максимальных подъема и снижения всех символов в шрифте.

Давайте теперь воспользуемся методами объекта FontMetrics для получения подъема, снижения и длины строки, которую требуется нарисовать, и с помощью полученных значений отцентрируем ее в нашем апплете.


ГЛАВА 14. Апплеты

До сих пор мы создавали приложения (applications), работающие самостоятельно (standalone) в JVM под управлением графической оболочки операционной системы. Эти приложения имели собственное окно верхнего уровня типа Frame, зарегистрированное в оконном менеджере (window manager) графической оболочки.

Кроме приложений, язык Java позволяет создавать апплеты (applets). Это программы, работающие в среде другой программы — браузера. Апплеты не нуждаются в окне верхнего уровня — им служит окно браузера. Они не запускаются JVM — их загружает браузер, который сам запускает JVM для выполнения апплета. Эти особенности отражаются на написании программы апплета.

С точки зрения языка Java, апплет — это всякое расширение класса Applet, который, в свою очередь, расширяет класс panel. Таким образом, апплет — это панель специального вида, контейнер для размещения компонентов с дополнительными свойствами и методами. Менеджером размещения компонентов по умолчанию, как и в классе Panel, служит FiowLayout. Класс Applet находится в пакете java. applet, в котором кроме него есть только три интерфейса, реализованные в браузере. Надо заметить, что не все браузеры реализуют эти интерфейсы полностью.

Поскольку JVM не запускает апплет, отпадает необходимость в методе main (), его нет в апплетах.

В апплетах редко встречается конструктор. Дело в том, что при запуске первого создается его контекст. Во время выполнения конструктора контекст еще не сформирован, поэтому не все начальные значения удается определить в конструкторе.

Начальные действия, обычно выполняемые в конструкторе и методе mamo, в апплете записываются в метод inito класса Applet. Этот метод автоматачески запускается исполняющей системой Java браузера сразу же после загрузки апплета. Вот как он выглядит в исходном коде класса Applet:

public void init()<>

Негусто! Метод init () не имеет аргументов, не возвращает значения и должен переопределяться в каждом апплете — подкласре класса Applet. Обратные действия — завершение работы, освобождение ресурсов — записываются при необходимости в метод destroy о, тоже выполняющийся автоматически при выгрузке апплета. В классе Applet есть пустая реализация этого метода.

Кроме методов init() и destroy() в классе Applet присутствуют еще два пустых метода, выполняющихся автоматически. Браузер должен обращаться к методу start() при каждом появлении апплета на экране и обращаться к методу stop(), когда апплет уходит с экрана. В методе stop() можно определить действия, приостанавливающие работу апплета, в методе start() — возобновляющие ее. Надо сразу же заметить, что не все браузеры обращаются к этим методам как должно. Работу указанных методов можно пояснить простым житейским примером.

Приехав весной на дачный участок, вы прокладываете водопроводные трубы, прикручиваете краны, протягиваете шланги — выполняете метод init о для своей оросительной системы. После этого, приходя на участок, включаете краны — запускаете метод start(), а уходя, выключаете их — выполняете метод stop(). Наконец, осенью вы разбираете оросительную систему, отвинчиваете краны, просушиваете и укладываете водопроводные трубы — выполняете метод destroy().

Все эти методы в апплете необязательны. В листинге 14.1 записан простейший апплет, выполняющий вечную программу HelloWorid.

Листинг 14.1. Апплет HelloWorld

import j ava.awt.*;

import j ava.applet.*;

public class HeiioWorid extends Applet<

public void paint(Graphics g)<

g.drawstring(«Hello, XXI century World 1 «, 10, 30);

Эта программа записывается в файл HelloWorld.java и компилируется как обычно: javac HelloWorld.java

Компилятор создает файл HelloWorkLclass, но воспользоваться для его выполнения интерпретатором java теперь нельзя — нет методаjnainо. Вместо интерпретации надо дать указание браузеру для запуска апплета.

Листинг 14.2. Файл HTML для загрузки апплета HelloWorid

Включение апплета Java в документ HTML.

Апплет Java, как и программа на JavaScript, должен выполняться из гипертекстового документа HTML. Именно с этим свойством апплетов связано происхождение термина «выполняемое содержимое». Чтобы включать апплеты в файл HTML, испульзуется HTML-тег . Тег является контейнерным тегом. Это значит, что в тексте гипертекстового документа за этим тегом обязательно должен быть указан закрывающий тег . Ниже привожу синтаксис тега (необязательные атрибуты выделены синим цветом ).

Как включить поддержку java апплетов в Chrome?

1.Установил свежую версию jre
2. Прошел по ссылке chrome://flags/#enable-npapi
3. Включил NPAPI
4. Выполнил перезапуск

Сайты jsp на GlassFish запускаются (проверял хоть какую то поддержку java), а вот апплеты нет ( Необходимы авторизации на гос портале с помощью эцп )

По данному адресу www.javatester.org/version.html наблюдаю серый прямоугольник, это значит что поддержки нет?!


Помогите советом люди добрые!

  • Вопрос задан более трёх лет назад
  • 1530 просмотров

Благодарю, все же теплилась надежда на заглушку. С FireFox такая же беда, не грузятся апплеты. Попытался включить.

Тут https://java.com/ru/download/help/enable_browser.xml написано, что необходимо для mozilla установить плагин.
В окне управления дополнениями выберите Плагины
Нажмите на подключаемый модуль платформы Java (TM) (для Windows)
Но в поиске такого плагина нет.

Методом тыка установил Java (TM) QuickJava и Java Api , но это не решило проблему, над серым квадратом отображается сдедующее: Browser has Java disabled

Java. Lab2. Создание апплетов

Задание:

Создать апплет в соответствие с индивидуальным заданием.

Задачи 1 – 5 предусматривают моделирование физических закономерностей. В апплете должна быть предусмотрена возможность ввода параметров. В качестве выходных данных должны быть представлены схема взаимодействия и анимация, демонстрирующая результаты вычислений при заданных параметрах.

  1. Построение графиков простейших функций

Возможные функции представлены списком. При выборе функции из списка появляются поля ввода параметров этой функции. Должна быть предусмотрена возможность вывода суммы двух выбранных пользователем функций.

Выполнение:

Для создания апплета необходимо создать html страницу, в которой будет присутствовать тег:

У тега applet на самом деле очень много различных параметров, но самые основные перечисленные выше.

Затем необходимо написать на Java сам код апплета.

При написании апплета необходимо учитывать, что главный класс апплета необходимо наследовать от класса Applet. Также главным методом (методом, вызывающимся при старте будет) не метод main, а метод init и его уже не нужно делать статическим.

Необходимо выбирать функцию из списка. Также должна быть возможность вывода суммы двух выбранных пользователем функций. Проще всего для вывода суммы сделать для второй функции отдельный список возможных функций. Но тогда возникает такая проблема, что нужно каким-то образом выводить не только сумму, но и просто одну функцию. Можно, конечно, сделать переключатель, но проще в список функций вставить нулевую функцию (то есть результат которой всегда будет равен 0),

Для ввода параметров функции лучше всего подойдут текстовый поля TextField (они для простоты дальнейшего программирования загнаны в массив, причём отдельный массив для первой функции из суммы и для второй).

Написание программы достаточно просто. Все текстовые представления функций, которыми потом заполняются списки хранятся в массиве. При выборе функции из списка в процедуре обработки событий public Boolean handleEvent ( Event evt ) в зависимости от функции делаются видимыми определённое количество надписей и текстовых полей. Туда будут вводиться параметры.

При нажатии кнопки «Нарисовать график» с помощью getGraphics() получаем объект типа Graphics. На этом объекте и будет происходить рисование графика и разметочной сетки. затем в зависимости от выбранных функций в списках (а точнее по их индексам) и параметрам в текстовых полях (естественно, их предварительно нужно считать и преобразовать из строки в числа). Сначало его необходимо очистить (закрасить белым прямоугольником) и нарисовать сетку.

Затем выполняется вычисление значения суммы двух функций в зависимости от x им вывод графика на экран. Для вычисления значения одной функции был оформлен метод

Java апплет не загружен что делать

В статье, я расскажу как исправить ошибку Java апплет не загружен. На протяжении более чем десятилетия существовало большое количество веб-технологий. Так, например, для мультимедиа и простых игр использовался Flash, а для проведения операций, предъявляющих высокие требования к безопасности – ActiveX и Java. Но если разработанная Microsoft ActiveX уже давно канула в лету, то Java EE продолжает быть актуальной до сих пор. И дело не в том, что не существует достойных и более простых для конечного пользователя аналогов (они-то как раз появились несколько лет назад), проблема в том, что некоторые организации вложили десятки и сотни тысяч долларов в разработку приложений на основании этих технологий, и они просто так не могут от них отказаться. Именно поэтому, пользователи при попытке войти в определенный сервис могут видеть сообщение: Java апплет не загружен, что делать если вы повстречали его мы как раз и рассмотрим ниже.


При попытке войти в ВТБ24 онлайн, возникает ошибка

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

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

Что делать, если Java апплет не загружен

Загрузить Java с официального сайта

В первую очередь потребуется установить само программное обеспечение. Если оно загружено, но не включено, все равно скачайте – пусть будет установлена самая свежая версия. Для этого:

  1. Посетите страницу загрузки Java на официальном сайте;
  2. Ресурс должен самостоятельно определить операционную систему и предложить ссылку на загрузку нужной версии ПО;
  3. Кликните на красную кнопку «Загрузить Java бесплатно»;
  4. После этого сразу начнется процесс загрузки;
  5. Запустите скаченный файл и проследуйте инструкциям;
  6. Перезагрузите браузер.

Следует отметить, что в Google Chrome (начиная с 42-й версии) апплет Java официально не поддерживается, так как корпорация считает соответствующую технологию устаревшей. Поэтому, чтобы воспользоваться Java запустите другой веб-браузер, например, FireFox.

Включить Java в Firefox

Чтобы проблем с Java не возникало, выполните следующие действия:

  1. Запустите Firefox (если он отсутствует, то скачайте и установите его с официального сайта);
  2. Откройте меню программы и нажмите на «Дополнения»;
  3. Оказавшись на соответствующей странице, перейдите на вкладку «Плагины»;
  4. Напротив пункта «модуль платформы Java» будет переключатель – переведите его в положение «Всегда включать» (если он уже включен, то ничего не делайте);
  5. Можете перезагрузить браузер.

После выполнения указанных действий заходите на интересующий вас сайт – весь его функционал (конечно, если он не использует других сторонних технологий) будет работать, а ошибки с загрузкой Java апплет не возникнет.

Можно ли обойтись без Java

Если у вас нет необходимости использовать веб-приложения (как в случае в банковским клиентом ВТБ24), созданные на основании Java EE, тогда соответствующий апплет вам ни к чему. Постепенно даже крупные компании переходят на более актуальные сейчас для веб-а технологии, делая взаимодействие с функциями их сервисов намного проще для конечного пользователя.

Applet java апплеты (нет в html 2 0)

Этот раздел касается:

  • Платформы: Windows 7, Windows 8, Windows 10
  • Версии Java: 7.0, 8.0

ПРИЗНАКИ

Апплеты Java перестали запускаться после обновления до Java 7 Update 65.

Эта проблема возникает для апплетов Java, использующих параметр _arguments Java, если в файле deployment.properties отсутствует строка deployment.javaws.jre.0.args= .

Эта проблема устранена в Java 7 Update 67 (7u67).
Загрузите последнюю версию Java, чтобы решить проблему загрузки апплета.

Для пользователей, которые не могут выполнить обновление до версии 7u65, ниже приведены варианты решения проблемы.

Проблема с IE и Java-апплет. Нет поддержки Java Applet

Я столкнулся проблемы с Java и IE Я пытаюсь выполнить веб-приложение, которое вызывает апплет. Однако IE отображает ошибку показано ниже:

Я установил JAVA SDK от: http://www.oracle.com/technetwork/pt/java/javase/downloads/jdk7-downloads-1880260.html Версия Java я использую (Java SE Development Kit 7u79> дк -7u79-окон-x64.exe).

Я следил за поиск и устранение неисправностей ссылку ( https://java.com/en/download/help/ie_tips.xml ) упоминается под сессии: (Почему не Java работать в Internet Explorer после того, как я только что установил Java?)

Я перезагрузил свой IE, повторно установлен Java, но ничего не помогало.

Я из идей сейчас, кто решил эту проблему, пожалуйста, дайте мне знать.

Детали системы: Windows 8.1 jdk1.7.0_79 jre7

Илон Маск рекомендует:  Destructor - Ключевое слово Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL