2013-11-14 3 views
2

Я использую этот код, чтобы получить координаты X и Y изображения, помещенного как значок jLable. Этот метод для получения координат был предложен путем ответа на этот вопрос question.MouseListener, вызываемый несколько раз

private void lblMapMouseClicked(java.awt.event.MouseEvent evt) {          
      lblMap.addMouseListener(new MouseAdapter() { 
       public void mouseClicked(MouseEvent e) { 
        double X = e.getX(); 
        double Y = e.getY(); 
        System.out.println("X: " + X + "Y: " + Y); 
       } 
      }); 
    } 

Когда я запускаю этот public void mouseClicked(MouseEvent e) { }, вызывается несколько раз. Точно количество раз, когда я нажимаю на изображение.

Например: Если я нажимаю на него в третий раз, Значения X и Y от линии System.out.println, печатаются 3 раза.

И увеличивается, так как количество раз, когда я нажимаю, увеличивается. Может ли кто-нибудь из вас объяснить, почему это происходит? И как я могу это исправить? :)

+0

Возможно, вам нужно реализовать какую-либо функцию мыши или мышь. – c0d3Junk13

+0

Какая функция вы предлагаете? Я пробовал использовать этот код в событии Mouse Pressed, но то же самое происходит. – direndd

ответ

4

Проблема заключается в том, что вы добавляете нового слушателя снова и снова, когда клик происходит здесь.

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); 
} 

И это должно устранить проблему.

Надеюсь, это поможет.

+0

Да, это сработало. Я не знаю, почему я добавил этот дополнительный addMouselistener. Может быть, я прочитал ответ на предыдущий вопрос неправильно. Спасибо! :) – direndd

4

это выглядит для меня, что каждый раз, когда изображение нажимают новый слушатель мыши добавлен .. сделать также

System.out.println(this) 

проверить, из которого экземпляр слушателя мыши он фактически печататься

+0

Да, я думаю, вы правы. Он создает несколько mouselisteners. Это результат, который я получил. https://drive.google.com/file/d/0B8JZMxx6Km7oZzJkamEwajFmcGc/edit?usp=sharing Итак, как я могу это исправить? – direndd

+0

@DirenDantanarayana проверить Sri Harsha Chilakapati ответить – smajlo

+0

Да, я пробовал, и это сработало. Спасибо за вашу помощь. :) – direndd

Смежные вопросы