java中的自定义游标

java中的自定义游标,java,swing,Java,Swing,最近,我正在构建一个JavaSwing应用程序,并希望添加一个自定义游标。我使用了以下代码 public void customCursor() { Toolkit toolkit = Toolkit.getDefaultToolkit(); Image image = toolkit.getImage("pencil.gif"); Point hotspot = new Point(0,0); Cursor cursor = toolkit.createCust

最近,我正在构建一个JavaSwing应用程序,并希望添加一个自定义游标。我使用了以下代码

public void customCursor() {
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Image image = toolkit.getImage("pencil.gif");
    Point hotspot = new Point(0,0);
    Cursor cursor = toolkit.createCustomCursor(image, hotspot, "pencil");
    setCursor(cursor);
}
并在构造函数中调用customCursor()方法。运行应用程序时,光标不可见。我试着给出绝对路径并使用url。还是一样的问题。我还知道(正如这里提到的)windows操作系统的最佳光标大小是32x32。因此,对于上面的代码集,我添加了以下行

toolkit.getBestCursorSize(32, 32);

仍然没有进展。我还试着使用32x32像素的图像,但还是不走运。有人能提出解决办法吗。(如果出现版本问题,我使用的是JDK1.7和jre7)

可能的原因是映像的位置

从您的代码示例来看,图像“似乎”是一个嵌入式资源。这些资源不能像文件系统上的普通文件那样访问

而不是

 Image image = toolkit.getImage("pencil.gif");
尝试使用

 Image image = toolkit.getImage(getClass().getResource("pencil.gif"));
假设映像与类文件或文件位于同一位置

 Image image = toolkit.getImage(getClass().getResource("/pencil.gif"));
如果映像位于其他位置(此示例演示位于默认包中的映像)


我应该提到,如果使用大于32x32的图像,Windows通常会截断32x32像素范围以外的所有内容,因此,可能只是看到空白。确保它自己的图像是准确的32x32@Makoto我认为,除了“接受”的答案是链接到异地资源外,这与如何创建自定义光标无关,因为OP已经显示了工作代码,但为什么特定图像不工作,这听起来更像是图像的位置、加载方式和/或Windows下图像的大小问题-imhot此方法有效。另外,我第一次使用的图像太大。我试着使用32x32图像,现在它工作得很好。非常感谢。