Java 2D。盘旋在圈子上方

时间:2009-12-03 01:02:21

标签: java user-interface awt java-2d

如果我使用Java2D绘制一些圆圈。当我将鼠标悬停在任何一个圈子上时,有没有办法显示一些文字?即我想显示该圈子的ID和其他一些东西。

3 个答案:

答案 0 :(得分:2)

有很多方法可以达到你想要的效果。这是一个解决方案。我假设你使用Ellipse2D来创建圆圈。我假设您正在像JPanel这样的JComponent上绘制圆圈。

所以你声明了Ellipse。

  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 :(得分:1)

我不知道你是否可以直接这样做。但是您可以使用简单的数学来检查游标位置:(x-a)^ 2 +(y-b)^ 2 = r ^ 2其中x,y是游标位置a,b是圆心,r是半径。

答案 2 :(得分:0)

您必须保存所有中心和半径,并根据当前鼠标位置对其进行测试。

这是非常简单的操作。如果鼠标位置的距离和其中一个圆的中心小于半径,则鼠标位于其中,您可以绘制所需的悬停消息。

这里有一个问题显示数学:Equation for testing if a point is inside a circle

希望有帮助...

有一个Polygon类可以为你做(contains方法),但没有一个实现类是圆形的:S