Java中的较大游标

时间:2013-02-19 00:29:21

标签: java swing cursor awt

是否有可能创建一个比Windows中预定义的32x32更大的游标(通过方法createCustomCursor())(例如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消失了,光标在每一点被绘制,所以我必须以某种方式删除它?

2 个答案:

答案 0 :(得分:1)

是否有方法使光标小于预定义的32x32?如果是这样只是让光标变得非常小以至于无法被注意到,或者制作一个透明的光标......那么,只需将图像移动到光标当前位置的每个坐标(这里插入所需的时间间隔)

答案 1 :(得分:1)

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

要制作更大的光标,我相信这会有效:

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

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

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