Как скрыть курсор в приложении Swing?

Существует ли способ скрыть курсор (кроме использования прозрачного изображения как курсор)?

44
задан vaxquis 4 September 2017 в 22:57
поделиться

1 ответ

Вы должны иметь возможность использовать свойство fill-rule: evenodd для достижения этого эффекта, если вы хотите предотвратить заливку прямоугольника от картины, где находится круг. Смотрите этот пример из спецификации SVG (изображение ниже будет отображаться только в том случае, если ваш браузер поддерживает SVG):

A pentagram and two circles, filled in red, with the centers cut showing the white background

По какой-то причине я не могу заставить это работать с такими фигурами, как rect и ellipse , которые вы предоставили в вопросе. Вот моя попытка :

A blue square with a circle inside

-121--1329851-

Похоже, что класс Cursor не имеет «пустого» курсора для начала, поэтому можно определить новый «пустой» курсор с помощью метода Toolkit.createCustomCursor .

Вот один способ, который я пытался, кажется, работает:

// Transparent 16 x 16 pixel cursor image.
BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);

// Create a new blank cursor.
Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(
    cursorImg, new Point(0, 0), "blank cursor");

// Set the blank cursor to the JFrame.
mainJFrame.getContentPane().setCursor(blankCursor);

Edit

Относительно комментария обо всем, что внутри JFrame заканчивается без курсора, кажется, что Component , которые содержатся в JFrame , в конечном итоге наследует курсор контейнера ( JFrame ), поэтому, если требуется наличие определенного компонента , необходимо вручную установить требуемый курсор.

Например, если есть JPanel, содержавшийся в JFrame, то можно было установить курсор того JPanel к дефолту системы, используя метод Cursor.getDefaultCursor :

JPanel p = ...
// Sets the JPanel's cursor to the system default.
p.setCursor(Cursor.getDefaultCursor());
66
ответ дан 26 November 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: