Есть ли способ установить изображение курсора мыши по умолчанию для Java-приложения Swing? - PullRequest
0 голосов
/ 24 января 2019

Я работаю с большим приложением Java Swing.Клиент хочет иметь увеличенное изображение курсора для мыши из-за ограничений (места) мониторов, которые могут использоваться для приложения.

Способ сделать это для отдельного экземпляра Swing JFrame - что-то вроде:

Image image = toolkit.getImage("resources/NetworkGreen48.gif"); Cursor customCursor = toolkit.createCustomCursor(image , new Point(0, 8), "img"); mainJFrame.setCursor (customCursor);

это прекрасно работает для JFrame mainJFrame и любых компонентов, встроенных в JFrame mainJFrame.

Однако у этого приложения есть буквально сотни независимых JFrames, JDialogs и т. Д. Для них, работающих в той же JVM, но не добавленных в основной JFrame mainJFrame, курсор возвращается к значению операционной системы по умолчанию.

Есть ли хороший способ установить курсор мыши для ВСЕХ мест, где мышь будет использоваться в приложении Swing?

Рассматривал это, общаясь с ОС, но это приложение работает наWindows в настоящее время и будет работать на некоторых версиях Linux в будущем, так что я бы лучше не зависел от ОС.

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

1 Ответ

0 голосов
/ 24 января 2019

первая часть: пользовательский курсор Я искал, чтобы определить это, используя внешний вид, но я ничего не нашел о кодировании пользовательского курсора внутри, поэтому есть 2 решения, всегда использующие пользовательский подкласс JFrame, где метод frameInit переопределяетсяиспользовать ваш курсор.Или используйте фабрику, чтобы создать весь фрейм, который вам нужен, чтобы установить свойство, как вы делали раньше.

Swing не полностью независим, я думаю, что вы видите мало различий в рендеринге между используемой ОС.Единственное мнение, что это изменение - это внешний вид (laf или plaf), каждая ОС использует свой собственный plaf.но есть кросс OS Laf под названием Metal.Вот документация, относящаяся к тому, как изменить laf:

https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

, чтобы быть уверенным, что это кросс-ОС. Рекомендуется работать с использованием Metal, но это не обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...