2009-12-03 29 views
2

如果我使用Java2D繪製一些圓圈。當我將鼠標懸停在任何圈子上時,是否會顯示某些文字?即我想顯示該圈子的ID和一些其他的東西。Java 2D。懸停在Circle上

回答

0

您必須保存所有中心和半徑,並根據當前鼠標位置進行測試。

這是非常簡單的操作。如果鼠標位置與其中一個圓的中心的距離小於半徑,則鼠標位於其中,並且您可以繪製所需的懸停消息。

這裏有一個問題,表明數學:Equation for testing if a point is inside a circle

希望幫助...

有可能會爲你做它(在包含法)多邊形類,但沒有的實施班級是一個圈子:S

+0

由於檢查距離需要計算平方根,所以更好地使用圓方程(更改== for <)。 – 2009-12-03 01:30:07

+0

爲真。我應該說平方距離與平方半徑相比:D 我指出了另一個有python代碼的問題鏈接:D 感謝您的糾正:D – 2009-12-03 01:47:41

2

有很多方法可以完成你想要的。這是一個解決方案。我假設你正在使用Ellipse2D創建圓。我假設你正在像JPanel一樣在JComponent上繪製圓。

所以你聲明橢圓。

Shape circle = new Ellispe2D.Double(x, y, width, height); 

然後,實現MouseMotionListener來檢測用戶何時將鼠標移動到JPanel上。

public void mouseMoved(MouseEvent e){ 
     if(circle.contains(e.getPoint())){ 
      //the mouse pointer is over the circle. So set a Message or whatever you want to do 
      msg = "You are over circle 1"; 
     }else{ 
      msg = "You are not over the circle"; 
     } 
    } 

然後在paint()或方法的paintComponent(哪一個你將覆蓋做畫):

g2.fill(circle); 
    g2.drawString(msg, 10, 10); //write out the message 
1

我不知道,如果你可以直接做到這一點。但是你可以用簡單的數學來檢查光標位置:(x-a)^ 2 +(y-b)^ 2 = r^2其中x,y是光標位置a,b是圓心,r是半徑。