2

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

4

3 回答 3

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
于 2009-12-03T01:12:38.947 回答
1

我不知道您是否可以直接执行此操作。但是您可以使用简单的数学来检查光标位置: (xa)^2+(yb)^2=r^2 其中 x,y 是光标位置 a,b 是圆心,r 是半径。

于 2009-12-03T01:25:37.360 回答
0

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

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

这里有一个问题显示了数学:用于测试点是否在圆内的方程

希望有帮助...

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

于 2009-12-03T01:11:51.337 回答