2013-02-19 36 views
3

是否有可能在Windows中創建比預定義的32x32更大的遊標(通過方法createCustomCursor())(例如64x64甚至更多)?Java中的較大遊標

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消失,並且光標在每一點上,所以我不得不刪除它的方式繪製的?

+0

當您嘗試時發生了什麼?爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-02-19 00:31:36

+0

實際上面的代碼創建了一個使用窗口大小爲32x32的光標..我想知道,如果存在一個更有效的方式來編寫一個更大的光標!? – processWatcher 2013-02-19 10:25:34

+0

解決 http://stackoverflow.com/questions/18475404/java-does-a-mousemoved-event-and-a-button-addmouselistener-interfere – processWatcher 2014-01-07 23:46:33

回答

1

是否有一種方法可以使光標小於預定義的32x32?如果是這樣,只需製作一個非常小的遊標,以便它不能被注意到,或者創建一個透明的遊標...那麼,只需將圖像移動到遊標當前位置的座標處(在此處插入所需的時間間隔)

1

Windows似乎只允許大小爲32x32像素的遊標,所以如果你想要另一個大小,你必須解決它。

爲了做更大的光標,我相信這將工作:

  • 創建自定義遊標是完全透明的。

  • 使用mouseMotionListener來獲得遊標的位置。

  • 在真實(透明)光標的位置繪製光標圖像。

+1

偉大的思想都相似;) – 2013-02-19 00:33:11

+0

有沒有更有效的方法來編程呢?因爲每次移動鼠標時都會繪製圖像效率低下! – processWatcher 2013-02-19 10:27:19

+0

不是我所知。 – syb0rg 2013-02-19 21:23:06