Java 如何使用AWT硬件光标使用两种以上的颜色?

Java 如何使用AWT硬件光标使用两种以上的颜色?,java,colors,cursor,awt,Java,Colors,Cursor,Awt,我想为我正在制作的电脑游戏使用硬件光标,AWT允许我这样做,并指定要使用的图像,但它只接受2种颜色和透明度,这是相当有限的 我相当肯定,在大多数当前系统上使用更大的颜色深度是可能的,有没有办法在AWT中实现这一点?还有其他的方法吗?我对AWT的记忆有些零散,但我认为它不一定能让你改变硬件光标。相反,它允许您定义自定义游标,并且由特定的工具箱实现(java.awt.toolkit的子类型)决定如何更改游标 类似地,虽然在API级别支持多色游标,但您的特定工具包可能不支持多色游标,您可能需要获取系统

我想为我正在制作的电脑游戏使用硬件光标,AWT允许我这样做,并指定要使用的图像,但它只接受2种颜色和透明度,这是相当有限的


我相当肯定,在大多数当前系统上使用更大的颜色深度是可能的,有没有办法在AWT中实现这一点?还有其他的方法吗?

我对AWT的记忆有些零散,但我认为它不一定能让你改变硬件光标。相反,它允许您定义自定义游标,并且由特定的工具箱实现(java.awt.toolkit的子类型)决定如何更改游标


类似地,虽然在API级别支持多色游标,但您的特定工具包可能不支持多色游标,您可能需要获取系统的toolkit对象并调用getMaximumCursorColors()。如果这个数字不够高,我不确定是否有办法通过Java绕过它。

如果调用Toolkit.getMaximumCursorColors并返回最大值2,那么AWT将使用这些来渲染光标。要解决这个问题,您可以制作一个完全透明的图像,并将其设置为光标。然后,在你用来绘制游戏的任何组件上添加一个鼠标侦听器,然后在当前鼠标坐标下绘制或绘制你想要的任何光标图像。

在图像上绘制对我来说不起作用

正常加载图像,然后:

Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(bufferedImage, new Point(0,0), "transparent");
Graphics graphics = bufferedImage.getGraphics();
graphics.drawImage(image, 0,0, null);            
frame.setCursor(cursor);

它仍然有工具包的双色限制:(

谢谢,这可能是我要找到解决方案的最接近的地方了