有没有办法为Java Swing应用程序设置默认的鼠标光标图像?

时间:2019-01-24 18:17:51

标签: 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,JDialogs等。对于这些,它们在同一JVM中运行,但未主动添加到mainJFrame JFrame中,因此光标恢复为操作系统默认值。

是否有一种很好的方法来为Swing应用程序中将使用鼠标的所有位置设置鼠标光标?

考虑通过与操作系统进行通信来实现此目的,但是,此应用程序当前正在Windows上运行,并且将来会在某些版本的linux上运行,因此我最好不要依赖于该操作系统。

我可以逐帧执行此操作。只是想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

第一部分:自定义光标 我正在尝试使用外观来定义它,但是我没有找到关于在其中放置自定义光标的任何信息,因此有2种解决方案始终使用JFrame的自定义子类,其中方法frameInit被重写以使用您的光标。或使用工厂创建您需要设置属性所需的所有框架。

Swing并不完全独立于os,我认为您所使用的os之间几乎没有渲染差异。唯一认为更改是外观(laf或plaf),每个OS都使用自己的plaf。但是有一个跨OS Laf的电话,称为Metal。这是有关如何更改laf的文档:

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

为了确保可以跨操作系统使用,建议使用Metal来运行它,但这不是必需的。