Установить глобальный курсор в JavaFX

У меня есть кнопка в моей сцене, где при щелчке курсор меняется на перекрестие, и пользователь может выбрать местоположение X, Y на экране с помощью щелчка мыши, затем курсор меняется обратно. Для этого я использую

scene.setCursor(Cursor.CROSSHAIR); //Change cursor to crosshair
scene.setCursor(Cursor.DEFAULT); //Change cursor to default

Проблема в том, что после того, как мышь утащили из рамки, она вернется к значению по умолчанию. Он остается только перекрестием, когда находится в окне. Я понимаю, что в Java невозможно взаимодействовать с вещами вне фрейма, поэтому я использую JNativeHook для моих слушателей мыши в этом проекте. С этим, есть ли способ изменить глобальный курсор?

1 ответ

Вы не можете и не должны менять курсор на весь экран, так как пользователь может запутаться в причине, по которой его мышь изменилась, но вы можете сделать это двумя способами.

  1. Вы можете создать файл.bat, который меняет курсор, и запускать этот файл с правами администратора из созданной вами Java-программы.

    ИЛИ ЖЕ
  2. Вы можете создать прозрачную сцену, которая покрывает весь экран, так что курсор всегда будет внутри вашего приложения, что является очень плохим решением, и если у вашего приложения есть рамка, это будет неприемлемо, но в любом случае это решение
Другие вопросы по тегам