Java Q&A

         

Небылицы?


Перевод на русский © , 2000

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 броузера. Тут вы можете найти дополнительную информацию:

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

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); } }



Содержание раздела