[an error occurred while processing this directive]

Небылицы?

Перевод на русский © Сергей Миссан, 2000
Оригинал статьи опубликован на сайте Javable.com

Java Q&A

Я видел веб-сайт, на котором курсор мыши превратился в рыбу с 5-ю слоями. Это вдохновило меня на то, чтобы превратить курсор на моей домашней страничке в музыкальную ноту с использованием 3-х слоев. Как мне это сделать?

В Java есть возможность создания курсоров мыши из любого изображения. Для этого нужно встроить Java апплет с измененным курсором в ваш HTML.

Создание курсора выполняется методом в java.awt.Toolkit из API:

public Cursor createCustomCursor
(Image cursor, Point hotSpot, String name)
throws IndexOutOfBoundsException

Toolkit-- это абстрактный класс, поэтому сначала нужно получить нативную реализацию:

Toolkit tk = panel.getToolkit();
Потом создать курсор:
Cursor cursor =
   tk.createCustomCursor
    (img, hotSpot, name);
И установить курсор для панели:
panel.setCursor(cursor);
(Полный код апплета показан ниже.)

К сожалению, создание курсоров возможно только в JDK 1.2 и выше. Это означает, что большинство веб-броузеров не будет их поддерживать, так как они используют только JDK 1.1. Один из выходов -- это использование Java Plug-in для JDK 1.2, который работает, как и любой другой plug-in броузера. Тут вы можете найти дополнительную информацию: http://www.javasoft.com/ products/plugin/index.html

Ну а теперь, как и обещано, полный код апплета:

import java.awt.*;
import java.applet.*;

public class CursorApplet
               extends Applet {

public void init() {

//загрузить изображение через Media Tracker
MediaTracker tracker = new MediaTracker(this);
Image cursor = getImage
     (getCodeBase(), "music_note.gif");
tracker.addImage(cursor, 0);

try
 {
  tracker.waitForID(0);
 } catch
  (InterruptedException ie)
   {
    ie.printStackTrace();
   }

Cursor cr = null;
//получить toolkit
Toolkit tk = getToolkit();

try
 {
//это x,y координаты изображения
//которые действительно "щелкают"
Point hotSpot = new Point(1, 1);
//создаем наш курсор
cr = tk.createCustomCursor(
     cursor, hotSpot, "music_note");
 } catch (IndexOutOfBoundsException e) {
   e.printStackTrace();
 }
//устанавливаем курсор для апплета
 setCursor(cr);
 }
}

Об авторе

Random Walk Computing это наибольшая консалтинговая фирма в Нью Йорке, специализирующаяся на Java/CORBA решениях для предприятий. Известные своим выдающимся знанием Java, консультанты Random Walk публикуются и выступают на самых престижных форумах мира. Для связи с Random Walk используйте javaqa@javaworld.com.

Reprinted with permission from the March 2000 edition of JavaWorld magazine.
Copyright © ITworld.com, Inc., an IDG Communications company.
View the original article at: http://www.javaworld.com/javaworld/javaqa/1999-11/01-qa-fish_p.html

Назад | Содержание | Вперед

  [an error occurred while processing this directive]