Установка курсора в Java

Я пытался разобраться с курсорами Windows. Я успешно сопоставил значения реестра с именами, данными различным типам курсоров в диалоговом окне «Свойства мыши» (доступ к которому осуществляется через панель управления).

Например, то, что реестр называет курсором «AppStarting», диалоговое окно «Свойства мыши» называет курсором «Работа в фоновом режиме» и так далее.

У меня возникают проблемы с использованием Java для установки этих курсоров, потому что для многих из них не существует константы. В Cursor.java определены различные курсоры:

public static final int DEFAULT_CURSOR = 0;
public static final int CROSSHAIR_CURSOR = 1;
public static final int TEXT_CURSOR = 2;
public static final int WAIT_CURSOR = 3;
public static final int SW_RESIZE_CURSOR = 4;
public static final int SE_RESIZE_CURSOR = 5;
public static final int NW_RESIZE_CURSOR = 6;
public static final int NE_RESIZE_CURSOR = 7;
public static final int N_RESIZE_CURSOR = 8;
public static final int S_RESIZE_CURSOR = 9;
public static final int W_RESIZE_CURSOR = 10;
public static final int E_RESIZE_CURSOR = 11;
public static final int HAND_CURSOR = 12;
public static final int MOVE_CURSOR = 13;

Но, после некоторого тестирования, есть несколько значений реестра, которым не соответствует ни одно из них. Например, записи реестра «Запуск приложения», «Справка», «Нет», «NWPen», «Person», «Pin» и «UpArrow» не имеют соответствующего определения (и это не просто целые числа после 13; У меня было нарушение, когда я использовал 14 в качестве значения).

Что еще более удивительно, значение «Hand» в реестре на самом деле не соответствует значению HAND_CURSOR. Установка нового курсора для определения HAND_CURSOR не изменяет значение, хранящееся в реестре для ключа «Hand».

Итак, как мне установить, скажем, значение курсора AppStarting с помощью Java?

Информация: 64-разрядная версия Windows 10 jdk1.8.0_151


person Bud    schedule 05.03.2018    source источник
comment
Java работает с предопределенным набором независимых от платформы курсоров. Если вы хотите, вы можете создать свой собственный курсор для изображения, как показано здесь.   -  person Sergiy Medvynskyy    schedule 09.03.2018
comment
Проблема в том, что это не работает с файлами .ani или .cur — только .gif и .png.   -  person Bud    schedule 10.03.2018


Ответы (1)


Я нашел ответ здесь, в котором говорится:

Среда выполнения Java требует, чтобы пользовательские курсоры были в формате PNG или GIF. Тот факт, что вы используете Java в системе Windows, не означает, что вы можете использовать этот формат для графического интерфейса в Swing/AWT.

Однако мне удалось найти это в документации, так что, возможно, вы сможете найти конкретный курсор, который ищете, по его имени. Из этой документации:

Возвращает специфичный для системы пользовательский объект курсора, соответствующий указанному имени. Имена курсоров, например: "Invalid.16x16"

Редактировать: вторая часть предназначена не для извлечения из системы, а для курсоров, включенных в JRE. См. этот вопрос.

Редактировать 2: я нашел этот пакет, содержащий курсор AppStarting, который может соответствовать вашим потребностям... Если вы включите пакет. Поскольку это объект Cursor, он должен служить вашей цели.

Редактировать 3: Информацию о draw2d на eclipse.org можно найти здесь.

person dimwittedanimal    schedule 12.03.2018