簡體   English   中英

Java中的自定義鼠標光標繪圖(擺動)

[英]Custom mouse cursor drawing in Java (swing)

我正在為Java中的繪圖應用程序創建自定義鼠標光標。 該應用程序必須能夠在Windows上運行,並且由於Windows中與游標大小(32 * 32 px)有關的限制,因此無法使用內置的Cursor功能。

我試圖使用MouseMotionListener在當前鼠標位置繪制圖像,並且在空面板上繪制時可以使用。 該圖像正確地“跟隨”了鼠標,所以這不是問題。

@Override 
public void paintComponent(Graphics g) {        
    super.paintComponent(g);
    g.drawImage(cursorimage, x, y, null);
}

但是,當我將孩子添加到該面板時,鼠標光標顯示在孩子后面。 例如,當我添加一些按鈕時,鼠標會在按鈕后面顯示其圖像。 如何將光標圖像移至前景?

我嘗試了一些操作,例如更改paintComponent的順序:

@Override 
public void paintComponent(Graphics g) {        
    g.drawImage(cursorimage, x, y, null);
    super.paintComponent(g);
}

我也嘗試覆蓋其他繪畫方法,例如paintChildren,paintComponents甚至是paint方法本身,但似乎也沒有用。 面板的子級之一也有一個drawComponent方法被覆蓋,我懷疑這也有影響。

您需要在玻璃窗格中繪畫。 見在Java教程http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html的源代碼在http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ GlassPaneDemoProject / src / components / GlassPaneDemo.java如果您修改該源代碼,則mouseMoved方法將調用redispatchMouseEvent(e,true) ;。 紅點將充當光標。

不幸的是,我發現這不適用於運行Java 1.6的Mac,但適用於運行Java 1.8的Mac和Windows。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM