2013-11-15 4 views
1

Я пытаюсь получить позицию мыши, нажимая кнопку мыши, но она не работает. Я расширяю MouseAdapter и, как указано в Javadoc, вызывается mouseMove(), когда курсор мыши перемещен на компонент, но кнопки не были нажаты.Захват движения мыши, когда мышь нажата в Java

Это пример класса я создал, чтобы показать вам мою проблему:

public class TestMouse extends MouseAdapter{ 

    int x,y; 
    boolean pressed; 

    public void mousePressed(MouseEvent e){ 
     pressed = true; 
    } 

    public void mouseReleased(MouseEvent e){ 
     pressed = false; 
    } 

    /* 
    Invoked when the mouse is not pressed only. 
    */ 
    public void mouseMoved(MouseEvent e){ 
     x = e.getX(); 
     y = e.getY(); 
    } 


    /* 
    I want something like that. 
    */ 
    public void mousePressedAndMoved(MouseEvent e){ 
     .... 
    } 

} 
+0

Вы пробовали mouseDragged()? – arcy

ответ

3

Это проблема с MouseAdapter, так как это abstract class и не interface (MouseMotionListener это один вам нужно), это дает пустые реализации для всех возможных событий, чтобы вы не были вынуждены переопределить их всех, это также означает, что вы можете пропустить некоторые из этих событий, если вы не читаете документы.

Если вы внимательно посмотрите на documentation, хотя, вы увидите, что у вас есть

public void mouseDragged(MouseEvent e) 

, что вы можете переопределить слушать именно то, что вам нужно.

+0

Я понимаю, но можете ли вы дать мне пример кода, пожалуйста? – user2928332

+0

Что еще вам нужно? Вы уже переопределяете 'mouseMoved', это то же самое, просто вызывается в другой ситуации. – Jack

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