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