2012-05-24 16 views
2

我想弄清楚如何在Java中的遊標周圍做一個黃色圓圈。事情是,我們有一個(顯然)記錄屏幕的屏幕錄像機。在Google上使用關鍵詞「Java中光標的黃色圓圈」只會讓我學習如何在MAC,WM和其他應用程序上的光標周圍添加一個黃色圓圈,而不是在用戶計算機上如何在Java中執行申請開始。圍繞遊標在Java中的黃色圓圈

如何在不使用現有圖像的情況下做到這一點?用一些不透明度繪製一個簡單的黃色圓圈將是最容易的事情,使它跟隨屏幕上的鼠標。而且,如果可以使其消失並在用戶單擊鼠標按鈕時重新出現,那就太棒了。

+0

您是否聽說過「Swings」? – Subs

+0

@ michael667好吧,因爲除了如何改變實際的光標之外我找不到任何東西,所以很難真正嘗試做某件事。我還沒有找到任何真正的例子或理論如何去做。而且我的JAVA知識也不是那麼先進。我通常開發網站。 –

+0

@Subs如果你的意思是擺動,那麼是的,即使我不確定這將如何幫助我找出使用什麼類來使光標更清晰可見。事情是Java swing庫是巨大的。我的意思是,找到鼠標聽衆很容易。但是很難弄清楚如何圍繞鼠標做一個圓圈。 –

回答

-1

不可能在現有的鼠標指針周圍添加一個圓。您只能將鼠標指針設置爲完整的圖像。

+0

感謝您的回答,但恐怕這不是解決方案。如果我在搜索時找到答案,我不會在這裏問。問題是我不想完全改變鼠標光標。我只想在它周圍創建一個黃色圓圈。而我的問題是如果沒有使用圖像可能。 –

+1

無法在現有的鼠標指針周圍添加一個圓圈。您只能將鼠標指針設置爲完整的圖像。 – michael667

+0

明白了。感謝你的回答。我會將你的答案標記爲這個問題的答案,因爲我不認爲有可能將評論標記爲已接受的答案。 –

2

可以通過將MouseMotionListener附加到組件來完成此操作,但需要一點工作才能使其完全按照您的要求工作。

我就從這樣的開始:

private static final double RADIUS = 15.0; 
private static final double DIAMETER = 2.0 * RADIUS; 
private static final Color XOR_COLOR = Color.yellow; 

private static Shape m_circle = null; 

@Override 
public void mouseMoved(MouseEvent e) 
{ 
    Graphics2D g2  = (Graphics2D) getGraphics(); 
    Point  p  = e.getPoint(); 
    Shape  circle = new Ellipse2D.Double(p.getX() - RADIUS, p.getY() - RADIUS, DIAMETER, DIAMETER); 

    clearCircle(g2); 

    g2.setXORMode(XOR_COLOR); 
    g2.draw(circle); 
    g2.setPaintMode(); 

    m_circle = circle; 
} 

private void clearCircle(Graphics2D g2) 
{ 
    if (m_circle != null) 
    { 
     g2.setXORMode(XOR_COLOR); 
     g2.draw(m_circle); 
     g2.setPaintMode(); 

     m_circle = null; 
    } 
} 

這也將是必要的,以確保老圓的事件的mouseExited您可以通過添加的MouseListener監聽清除。這也有mousePressed/mouseReleased/mouseClicked事件,你需要使它消失/重新出現在用戶的鼠標點擊上。

使用XOR很方便,因爲通過使用相同的顏色和樣式重繪相同的形狀來恢復屏幕非常簡單,但它不完全符合您的要求。可以通過捕獲將要繪製圓的區域的圖像來修復屏幕。通過在新位置繪製圓圈之前重新繪製損壞的區域,可以將圓圈從屏幕上移除。

+0

'getGraphics()'它來自哪裏? –

+0

你可以發佈一個完整的工作示例嗎?我嘗試了一些,但沒有成功。 –

+0

getGraphics()最初來自java.awt.Component,但是這段代碼需要一個返回Graphics2D實例的子類,比如javax.swing.JComponent – richj