3

是否有可能(通过方法createCustomCursor())创建比 Windows 中预定义的 32x32(例如 64x64 甚至更多)更大的光标?

Toolkit toolkit = Toolkit.getDefaultToolkit();
final Image cursor = toolkit.getImage(getClass().getClassLoader().getResource("images/cursor.png"));
toolkit.getBestCursorSize(64, 64);
Cursor mycursor=toolkit.createCustomCursor(cursor, new Point(0,0), "cursor");
setCursor(mycursor);

我尝试了以下方法:

 Cursor emptyCursor = Toolkit.getDefaultToolkit().createCustomCursor(new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB), new Point(0, 0), "empty"); 
        setCursor(emptyCursor);

        this.addMouseMotionListener(new MouseMotionListener(){
            public void mouseDragged(MouseEvent e) {
            }

            public void mouseMoved(MouseEvent e) {
                xCursor = e.getX();
                yCursor = e.getY();
                repaint();
                //e.consume();
            }
        });

 public void paint( Graphics g ) {
           g.drawImage(cursor, xCursor, yCursor, null);
       }

但它不起作用,整个 GUI 消失了,光标在每个点都被绘制,所以我必须以某种方式删除它?

4

2 回答 2

1

有没有一种方法可以使光标小于预定义的 32x32?如果是这样,只需将光标制作得如此之小以至于真的无法注意到,或者制作一个透明光标......然后,只需将图像移动到光标当前位置的坐标(在此处插入所需的时间间隔)

于 2013-02-19T00:31:55.637 回答
1

Windows 似乎只允许大小为 32x32 像素的光标,所以如果你想要另一个大小,你必须解决它。

为了制作更大的光标,我相信这会起作用:

  • 创建一个完全透明的自定义光标。

  • 使用 amouseMotionListener获取光标的位置。

  • 在真实(透明)光标的位置绘制光标图像。

于 2013-02-19T00:32:43.113 回答