Существует ли способ скрыть курсор (кроме использования прозрачного изображения как курсор)?
Вы должны иметь возможность использовать свойство fill-rule: evenodd
для достижения этого эффекта, если вы хотите предотвратить заливку прямоугольника от картины, где находится круг. Смотрите этот пример из спецификации SVG (изображение ниже будет отображаться только в том случае, если ваш браузер поддерживает SVG):
По какой-то причине я не могу заставить это работать с такими фигурами, как rect
и ellipse
, которые вы предоставили в вопросе. Вот моя попытка :
Похоже, что класс 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());