【问题标题】:Custom cursor in javajava中的自定义光标
【发布时间】:2014-07-18 06:57:02
【问题描述】:

最近我正在构建一个 java swing 应用程序并想添加一个自定义光标。我使用了以下代码,

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。还是同样的问题。我还知道(正如这里提到的http://en.allexperts.com/q/Java-1046/cursor-1.htm),Windows 操作系统的最佳光标大小是 32x32。所以对于上面的代码集,我添加了以下行,

toolkit.getBestCursorSize(32, 32);

仍然没有进展。我也尝试使用 32x32 像素的图像,但运气仍然不好。任何人都可以提出解决方案。 (如果是版本问题,我使用的是 jdk 1.7 和 jre7)

【问题讨论】:

  • 我应该提到,如果您使用大于 32x32 的图像,Windows 通常会截断超过 32x32 像素范围的所有内容,因此,您可能只是看到了空白。确保它自己的图像正好是 32x32
  • @Makoto 我会争辩说,除了“已接受”的答案是链接到异地资源之外,这与如何创建自定义光标无关,因为 OP 已经显示工作代码,但为什么特定图像不起作用,这听起来更像是图像位置或加载图像的方式和/或 Windows 下图像大小的问题 - 恕我直言

标签: java swing


【解决方案1】:

可能的原因是图像的位置。

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

代替

 Image image = toolkit.getImage("pencil.gif");

尝试使用...

 Image image = toolkit.getImage(getClass().getResource("pencil.gif"));

假设图像与类文件位于同一位置或

 Image image = toolkit.getImage(getClass().getResource("/pencil.gif"));

如果图像位于其他位置(此示例演示位于默认包中的图像)。

【讨论】:

  • 此方法有效。我第一次使用的图像也太大了。我尝试使用 32x32 图像,现在效果很好。谢谢。
猜你喜欢
  • 2013-10-29
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多