Java MouseListener打了多次电话

Java MouseListener打了多次电话,java,swing,coordinates,mouselistener,mouse-listeners,Java,Swing,Coordinates,Mouselistener,Mouse Listeners,我使用这段代码来获取放置为jLable图标的图像的X和Y坐标。 对此问题的回答提出了获取坐标的方法 当我运行这个public void mouseClicked(MouseEvent e)时,{}会被多次调用。 确切地说是我点击图像的次数 如果我第三次点击它, System.out.println行中的X和Y值将打印3次 它随着我点击次数的增加而增加。 你们谁能解释一下为什么会这样?我怎样才能修复它呢?:) 在我看来,每次单击图像时,都会添加新的鼠标侦听器。。也做 System.out.pri

我使用这段代码来获取放置为jLable图标的图像的X和Y坐标。 对此问题的回答提出了获取坐标的方法

当我运行这个
public void mouseClicked(MouseEvent e)时,{}
会被多次调用。 确切地说是我点击图像的次数

如果我第三次点击它,
System.out.println
行中的X和Y值将打印3次

它随着我点击次数的增加而增加。
你们谁能解释一下为什么会这样?我怎样才能修复它呢?:)

在我看来,每次单击图像时,都会添加新的鼠标侦听器。。也做

 System.out.println(this)

要检查鼠标侦听器的哪个实例实际打印了它,问题是当单击发生时,您正在一次又一次地添加一个新的侦听器,请单击此处

private void lblMapMouseClicked(MouseEvent evt) 
{
    lblMap.addMouseListener(new MouseAdapter()
    {
        ...
相反,将代码更改为此

private void lblMapMouseClicked(MouseEvent e)
{
    double X = e.getX();
    double Y = e.getY();
    System.out.println("X: " + X + "Y: " + Y);
}
它应该可以解决这个问题


希望这能有所帮助。

以上代码的问题是,每次单击图像都会创建新的鼠标事件

// Create a Mouse pressed Event
mouseLis = new MouseAdapter() {
                        public void mousePressed(MouseEvent e) {
                            actionMenthod(e);
                        }
                   };
这里我将我的事件附加到lblMap

       lblMap.addMouseListener(mouseLis);
此事件发生后,必须从lblmap中删除此事件

      lblMap.removeMouseListener(mouseLis);

当我再次单击时,只会出现一个事件,然后只打印一次。

也许您需要实现某种鼠标下键或鼠标上键功能。您建议的具体功能是什么?我曾尝试在鼠标按下事件中使用此代码,但同样的情况也发生了。是的,我认为你是对的。它会创建多个鼠标侦听器。这是我得到的输出。那么,我该如何解决这个问题呢?@DirenDantanarayana-check-Sri-Harsha-Chilakapati回答说:是的,它奏效了。我不知道为什么我加了那个额外的addMouselistener。可能是我读错了前面问题的答案。无论如何,谢谢!!!:)
      lblMap.removeMouseListener(mouseLis);