Небылицы?
Перевод на русский © , 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); } }