【问题标题】:How do I stop mousePressed in Java 7 (line from continuing to be drawn) when I go to use a JButton当我去使用 JButton 时,如何在 Java 7 中停止 mousePressed(继续绘制线)
【发布时间】:2016-05-03 21:33:15
【问题描述】:

我有一个由 JButton drawline 调用的类。下面的代码允许通过逐点创建一条线并将每个点存储到 ArrayList 来在 Jpanel 上绘制一条线。我只实现了允许绘制线条的 mousePressed 事件

我遇到的问题是,当我单击另一个按钮时,我调用了 saveToFile 按钮 该行保存到我想要的 CSV 文件(ptID,x,y),但是当我在 JPanel 中单击返回时,该行是每次点击鼠标都会继续绘制。

在将行写入 CSV 文件后,我已在 SaveToFile 按钮中将 pts arrayList 设置为空。

当我单击 JButton saveToFile 时,我不确定如何让 mousepressed 事件停止向 arrayList 写入一个点?

我在某处读到过一个事件可能会被停用,这不是一个好主意

我想知道

  1. 我需要清空 arrayList Pts 并在我之后重新绘制 saveToFile 以便在我重新绘制时从屏幕上删除该行?
  2. 我可以使用任何其他方法来阻止 mousePressed 仍然发生 一旦我点击了 saveLine 按钮

抱歉,如果这是微不足道的。我正在学习 Java 和 Swing。

类 DrawLine 实现 ActionListener{ 公共无效actionPerformed(ActionEvent事件) { 试试{

           addMouseListener(new MouseAdapter(){

              public void mousePressed(MouseEvent e){

              int yCoord = HEIGHT - e.getYCoord();
              int xCoord = e.getXCoord();

              String pointxy = "p" + x + "," +  y;
              Point p = new Point(pointxy);
              pts.add(p);                                
              repaint();

          }


        });
      }
      // catch stuff done here

     }

}

【问题讨论】:

    标签: java mouseevent


    【解决方案1】:

    在将点发送到 csv 后,尝试在 SaveToFile 按钮方法中重新实例化您的 ArrayList 点。如果您想保留这条线,那么您可能需要考虑构建一个 2D 数组列表:

        ArrayList<ArrayList<Point>> pts;
    

    并在每次按下 SaveToFile 按钮时添加一个新的 ArrayList 到 2D 数组列表。

    【讨论】:

    • 您好 llamaCaraDara,不幸的是,在 repaint() 之后,在 SaveToFile 按钮中重新实例化 pts ArrayList 不起作用。当我单击 JPanel 时,似乎已被删除的行重新出现,并在发生新鼠标指针单击的行中添加了一个新点
    • 这个ArrayList的作用域是什么?
    • ArrayList 对于 SaveToFile 是本地的,然后我将其设置为全局 arrayList
    • 确保将全局数组列表设置为新的数组列表,而不是本地数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多