Java - 获取绘制组件的名称



我有一个包含五个按钮的Java应用程序:

i) 正方形 ii) 矩形 iii) 圆形 iv) 三角形 iv) 清晰

单击四个按钮中的任何一个都将导致在绘图画布上绘制相应的形状。 这是用于绘制形状的代码:

绘图画布类继承自 JPanel。 用户单击并绘制到绘图画布的形状存储在名为 Shapes 的 ArrayList 中。

现在在绘图画布类中,我有许多鼠标侦听器。 在鼠标按下事件中,我想检测单击的内容。

这是我用于按钮的:

按钮的命名是使用 JButton 类的 setName 方法实现的。

但是,图形类没有这样的方法。 我如何检测其中一个形状已被单击画布(绘制后)?

若要跟踪绘制的内容,应跟踪在集合(如 ArrayList)中绘制到画布中的形状的坐标,并根据此数组对单击的鼠标位置进行检查。

如果您只是在Graphics中使用filldraw方法绘制形状,那么就无法再次获取信息,无论如何都无法从Graphics对象中获取信息。你将不得不自己做点什么。

如果列表中的对象继承自Shape,则可以检查单击是否在每个形状的范围内。

public void mousePressed(MouseEvent e) {
  for (Shape shape : shapes) {
    if (shape.contains(e.getPoint())) {
      //the shape was clicked
    }
  }
}

最新更新