0

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

i) 正方形 ii) 矩形 iii) 圆形 iv) 三角形 iv) 透明

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

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

现在在绘图画布类中,我有许多鼠标侦听器。在 MousePressed 事件中,我想检测点击了什么。

这是我用于按钮的:

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

但是,Graphics 类没有这样的方法。我怎样才能检测到其中一个形状已在画布上被点击(一旦它被绘制)?

4

2 回答 2

1

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

于 2012-11-20T15:04:49.850 回答
0

如果您只是使用filldraw方法绘制形状,Graphics则无法再次获取信息,Graphics无论如何都无法获取对象。你将不得不自己做一些事情。

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

public void mousePressed(MouseEvent e) {
  for (Shape shape : shapes) {
    if (shape.contains(e.getPoint())) {
      //the shape was clicked
    }
  }
}
于 2012-11-20T15:10:55.937 回答