当用户将鼠标悬停在可以单击以获取上下文相关帮助的对象上时,我想通过用问号“标记”内置默认鼠标光标来制作自定义帮助光标。我希望这可以很好地跨平台/外观工作(例如,与白色Windows鼠标和黑色Mac鼠标一致。)有没有办法从当前的工具包中获取光标图像,以便我可以生成一个组合的Image来设置为光标吗?
This question指出无法从Cursor对象获取信息。还有一个评论建议在JRE中钓鱼,我也尝试了一下:在谷歌图片中,我没有找到任何可以直接访问的图形文件来进行掠夺
另一种方法是添加一个mouseMoved侦听器,并在光标右侧手动绘制一下(在父节点上,我想,为了避免在边界处剪裁?)但是我有点担心开销,并且在最初的探索,这看起来非常复杂。我会采取其他建议来寻找或制作一个很好的帮助光标。 (手是最好的内置,但它并没有像帮助那样明确地说“帮助”。)
答案 0 :(得分:3)
一般来说,没有。大多数游标都归平台的主机操作系统所有,但有少数游标位于$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
答案 1 :(得分:2)
我不确定这是你的最佳解决方案,因为一个好的内置鼠标光标应该是最好的。无论如何,您可以使用鼠标监听器并根据鼠标位置在玻璃板上绘图。 Here's一个玻璃窗绘图示例。
答案 2 :(得分:0)
Java使用默认系统光标,但拖放光标除外,它使用它自己的光标。
因此,对于每个游标但DnD ,请参阅Extract cursor image in 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;
}