java - 有没有办法为 java Swing 应用程序设置默认鼠标光标图像?
问题描述
我正在使用一个大型 java swing 应用程序。由于可用于应用程序的监视器的限制(空间),客户希望鼠标具有更大的光标图像。
对单个 Swing JFrame 实例执行此操作的方法类似于:
Image image = toolkit.getImage("resources/NetworkGreen48.gif");
Cursor customCursor = toolkit.createCustomCursor(image , new Point(0, 8), "img");
mainJFrame.setCursor (customCursor);
这适用于 mainJFrame JFrame 和嵌入在 mainJFrame JFrame 上的任何组件。
然而,这个应用程序实际上有数百个独立的 JFrame、JDialog 等。对于这些,在同一个 JVM 中运行,但没有主动添加到 mainJFrame JFrame 中,光标恢复为操作系统默认值。
有没有一种好方法可以为 Swing 应用程序中使用鼠标的所有位置设置鼠标光标?
考虑通过与操作系统交谈来做到这一点,但是,这个应用程序目前在 Windows 上运行,并且将来会在某些版本的 linux 上运行,所以我最好不要依赖操作系统。
我可以逐帧执行此操作。只想知道有没有更好的方法。
解决方案
第一部分:自定义光标我正在搜索使用外观来定义它,但我没有找到任何关于在里面加载自定义光标的信息,所以有两个解决方案总是使用 JFrame 的自定义子类,其中方法 frameInit 被覆盖以使用你的光标。或者使用工厂创建您需要像以前一样设置属性的所有框架。
Swing 并非完全独立于操作系统,我认为您在使用的操作系统之间几乎看不到渲染差异。唯一认为变化的是外观(laf 或 plaf),每个操作系统都使用自己的 plaf。但是有一个跨 OS Laf 调用 Metal。这是与如何更改 laf 相关的文档:
https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
确保跨操作系统,建议使用 Metal 工作,但这不是必需的。
推荐阅读
- javascript - CryptoJS,如何从 js 解密(可能重复)到 python salt,iv,密文
- java - Spring Boot azure Active Directory 多个客户端 ID
- regex - notepad++ REGEX 如何找到匹配的字符串并保留它(删除所有周围的文本)
- c# - 如何在 C# 控制台中的前几个字符之后忽略每个输入?
- .net-core - Swagger - 自定义请求正文
- java - 如何从 Android Firebase 实时数据库中的节点检索所有数据?
- jestjs - 我们如何获得使用 Jest 执行的测试的 HTML 报告?
- asciidoc - 在 asciidoc 中重命名latexmath 宏
- css - 如何在一行的每一端放置一个弹性项目?
- swift - iOS 上的解析平台:大型多对多的关系、联接或数组?