2009-12-03 39 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是半径。