有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

事件Java获取绘制组件的名称

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

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

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

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

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

这是我用来做按钮的:

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

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


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    如果您只是在^{}中使用filldraw方法绘制图形,那么无法再次获取信息,也无法从Graphics对象中获取信息。你得自己做点什么

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

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