在Java中设置光标

3
我一直在尝试解决Windows Cursors的问题。我已经成功将注册表值与鼠标属性对话框中给定的各种光标类型的名称相匹配(通过控制面板访问)。
例如,注册表称为“AppStarting”的光标,在鼠标属性对话框中称为“正在后台工作”光标,等等。
我的问题在于使用Java设置这些光标,因为其中许多光标似乎没有常量。在Cursor.java中定义了各种光标:
public static final int DEFAULT_CURSOR = 0;
public static final int CROSSHAIR_CURSOR = 1;
public static final int TEXT_CURSOR = 2;
public static final int WAIT_CURSOR = 3;
public static final int SW_RESIZE_CURSOR = 4;
public static final int SE_RESIZE_CURSOR = 5;
public static final int NW_RESIZE_CURSOR = 6;
public static final int NE_RESIZE_CURSOR = 7;
public static final int N_RESIZE_CURSOR = 8;
public static final int S_RESIZE_CURSOR = 9;
public static final int W_RESIZE_CURSOR = 10;
public static final int E_RESIZE_CURSOR = 11;
public static final int HAND_CURSOR = 12;
public static final int MOVE_CURSOR = 13;

但是,在一些测试后,有几个注册表值没有对应的定义。例如,注册表中的“App Starting”、“Help”、“No”、“NWPen”、“Person”、“Pin”和“UpArrow”条目没有对应的定义(它们不仅仅是在13之后的整数;当我使用14作为值时,我遇到了违规情况)。

更令人惊讶的是,注册表“Hand”值实际上并不对应于HAND_CURSOR值。为HAND_CURSOR定义设置新的光标并不能改变存储在“Hand”键下注册表中的值。

那么,如何使用Java设置AppStarting光标值呢?

信息: Windows 10 64位 jdk1.8.0_151


2
Java使用预定义的一组平台无关光标。如果您想要为图像创建自己的光标,可以参考这里中所示的方法。 - Sergiy Medvynskyy
问题是它不能在 .ani 或 .cur 文件上工作 - 只适用于 .gifs 和 .pngs。 - Bud
1个回答

0

我在这里找到了一个答案,它说:

Java Runtime Environment 要求自定义光标为 PNG 或 GIF 格式。仅因为您在 Windows 系统上使用 Java 并不意味着您可以在 Swing/AWT GUI 中使用该格式。

然而,我在文档中找到了这个,所以也许你可以通过名称找到你想要的特定光标。根据文档:

返回与指定名称匹配的系统特定自定义光标对象。 光标名称例如:"Invalid.16x16"

编辑:第二部分不是从系统中提取,而是从 JRE 中包含的光标。请参见此问题

编辑2:我找到了this package,它有一个AppStarting光标可能适合你的需求... 如果你包含这个包。由于它是一个Cursor对象,所以应该能够满足你的目的。

编辑3:关于eclipse.org上draw2d的信息可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接