Внимание! Это сайт переехал на www.simplecoding.org

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

Если апплет у вас не запустился, то, возможно, вам нужно установить Java Plug-in. Его установка происходит автоматически, когда вы устанавливаете J2SE JRE (java 2 standart edition java runtime environment) или SDK (software development kit). Скачать их можно с сайта Sun Microsystems.
Апплет тестировался с версиями 1.4.2_03 и 1.5.0_06.

Апплет создан с помощью NetBeans IDE 3.6

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

В первую очередь рассмотрим, как встроить апплет в web-страницу.

<applet code=CircleClock.class archive="CircleClock.jar" width = 300 height = 300> <param name=dialColor value="FFFEeFEFE"> <param name=hairLineColor value="FF42C151"> <param name=hoursNeedleColor value="7F000000"> <param name=minutesNeedleColor value="7F0000FF"> <param name=secondsNeedleColor value="7FFF0000"> </applet>

Первая строка стандартная. В ней задаются следующие параметры:

code - имя класса, содержащего метод init().
archive - имя архива, содержащего апплет (jar-файл).
width - длина апплета.
height - высота апплета.

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

Кстати, длина не обязательно должна быть равна ширине. Если они отличаются, то диаметр циферблата будет выбран равным меньшей стороне, а сам циферблат - отцентрирован относительно большей. Чтобы посмотреть как это работает, задайте размер апплета 700х300 или 100х500.

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

При этом параметр name указывает название элемента, а параметр value - его цвет.

dialColor - цвет циферблата;
hairLineColor - цвет черточек на циферблате;
hoursNeedleColor - цвет часовой стрелки;
minutesNeedleColor - цвет минутной стрелки;
secondsNeedleColor - цвет секундной стрелки.

Как вы, наверное, догадались, цвета задаются в 16-тиричной системе счисления, а цветовая схема - ARGB (alpha, red, green, blue), т.е. первые две цифры задают прозрачность, вторые - красную составляющую цвета, третьи - зеленую, четвертые - синюю.

При этом FF соответствует максимально насыщенному цвету (или нулевой прозрачности), а 00 - отсутствию данной составляющей в цвете (или 100% прозрачности).

Приведем несколько примеров:

FFFFFFFF - не прозрачный белый цвет;
7F000000 - черный цвет (~50% прозрачность);
7F0000FF - синий цвет (~50% прозрачность);
7F00FF00 - зеленый цвет (~50% прозрачность);

Если вы захотите какую-нибудь стрелку сделать не видимой, то просто сделайте первые две цифры равными "00" (100% прозрачность), цвет при этом можно задавать любой (все равно стрелка будет не видна).

Теперь рассмотрим как работает апплет.

При запуске апплета выполняется установка цветов, определение размеров, расчет размеров стрелок, черточек на циферблате и т.д.

Далее нам необходимо с какой-то периодичностью обновлять содержимое апплета (т. е. определять текущее время и поворачивать стрелки). Для этого создаем парралельный поток (timer), который периодически вызывает функцию update().

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

Кстати, этот апплет использует библиотеку Java2D (пакет java.awt.Graphics2D). Она входит в состав платформы Java 2, т.е. это стандартная библиотека, но некоторые классы появились только в версии 1.4, поэтому с более старыми версиями могут быть проблемы.

Подробнее работа программы описана в комментариях и исходникам.

Скачать:

Исходный код (clock_src.zip - 5,8 кБ).

Апплет (clock.jar - 6,1 кБ).

Автор: Владимир Стаценко
Используются технологии uCoz