Установить глобальный курсор в JavaFX
У меня есть кнопка в моей сцене, где при щелчке курсор меняется на перекрестие, и пользователь может выбрать местоположение X, Y на экране с помощью щелчка мыши, затем курсор меняется обратно. Для этого я использую
scene.setCursor(Cursor.CROSSHAIR); //Change cursor to crosshair
scene.setCursor(Cursor.DEFAULT); //Change cursor to default
Проблема в том, что после того, как мышь утащили из рамки, она вернется к значению по умолчанию. Он остается только перекрестием, когда находится в окне. Я понимаю, что в Java невозможно взаимодействовать с вещами вне фрейма, поэтому я использую JNativeHook для моих слушателей мыши в этом проекте. С этим, есть ли способ изменить глобальный курсор?
1 ответ
Вы не можете и не должны менять курсор на весь экран, так как пользователь может запутаться в причине, по которой его мышь изменилась, но вы можете сделать это двумя способами.
- Вы можете создать файл.bat, который меняет курсор, и запускать этот файл с правами администратора из созданной вами Java-программы.
ИЛИ ЖЕ - Вы можете создать прозрачную сцену, которая покрывает весь экран, так что курсор всегда будет внутри вашего приложения, что является очень плохим решением, и если у вашего приложения есть рамка, это будет неприемлемо, но в любом случае это решение