在Swing中,有没有办法从工具包中提取预定义的鼠标光标Image?

当用户将鼠标hover在可以单击以获取上下文相关帮助的对象上时,我想通过“标记”带有问号的内置默认鼠标光标来制作自定义帮助光标。 我希望这可以很好地跨平台/外观工作(例如,与白色Windows鼠标和黑色Mac鼠标一致。)有没有办法从当前工具包中获取光标图像,以便我可以生成一个组合的Image来设置为光标吗?

这个问题指出无法从Cursor对象获取信息。 还有一个评论建议在JRE中钓鱼,我也尝试了一下:在谷歌图片中,我没有找到任何直接可访问的图形文件来掠夺

另一种方法是添加一个mouseMoved监听器,并在光标右侧手动绘制一下(我想,在父级上,以避免在边界处剪切?)但是我有点担心开销,在最初的探索中,这看起来很复杂。 我会采取其他建议来寻找或制作一个很好的帮助光标。 (手是最好的内置,但它没有像帮助那样明确地说“帮助”。)

我不确定这是你的最佳解决方案,因为一个好的内置鼠标光标应该是最好的。 无论如何,您可以使用鼠标监听器并根据鼠标位置在玻璃板上绘图。 这是一个玻璃窗绘图示例。

一般来说,没有。 大多数游标都归平台的主机操作系统所有,但有一些$JAVA_HOME/lib/images/cursors/位于$JAVA_HOME/lib/images/cursors/ ,例如:

 $ ls -1 lib / images / cursors /
 cursors.properties
 invalid32x32.gif
 motif_CopyDrop32x32.gif
 motif_CopyNoDrop32x32.gif
 motif_LinkDrop32x32.gif
 motif_LinkNoDrop32x32.gif
 motif_MoveDrop32x32.gif
 motif_MoveNoDrop32x32.gif

Java使用默认系统游标,但Drag-and-Drop游标除外,它使用它自己的游标。

因此,对于除DnD之外的每个游标,请参阅在Java中提取游标图像 。 必须使用JNA,并且可以轻松添加到任何Maven项目中。

对于DnD游标,来自trashgod的解决方案很好。 它们可以这样加载:

 private static Path customSystemCursorPath = null; public static Image loadDnDCursorImage(String cursorName) throws IOException { if (customSystemCursorPath == null) { String jhome = System.getProperty("java.home", "????"); customSystemCursorPath = Paths.get(jhome, "lib", "images", "cursors"); } // TODO change this to retrieve the cursor filename from cursors.properties cursorName = "win32_" + cursorName + "32x32.gif"; Path cursorPath = customSystemCursorPath.resolve(cursorName); Image image = ImageIO.read(cursorPath.toFile()); return image; }