How to recognize mouseDragged and mousePressed events in one listener?

In the following code, mouseDragged is not recognized. What am I doing wrong?

addMouseListener(new MouseInputAdapter() {

  @Override
  public void mouseDragged(MouseEvent e) { ... }
  @Override
  public void mousePressed(MouseEvent e) { ... }

});
+3
source share
3 answers
MouseInputAdapter mia = new MouseInputAdapter() {
  @Override
  public void mouseDragged(MouseEvent e) { ... }
  @Override
  public void mousePressed(MouseEvent e) { ... }
};
addMouseListener(mia);
addMouseMotionListener(mia); // <-- You're missing this one.
+7
source

It is not recognized because you are implementing mouseDraggedinternally addMouseListener.

mouseDraggedstarts and starts with . MouseMotionListenermousePressed MouseListener

Therefore, you need to implement both MouseListener, MouseMotionListenerand accordingly add the correct listener.

public class MyClass extends JPanel implements MouseListener,
                                               MouseMotionListener {

  public MyClass() {
    // whatever code you need, then add the listeners
    this.addMouseListener(this); 
    this.addMouseMotionListener(this);
   }

  public void mousePressed(MouseEvent e) { ... }
  public void mouseDragged(MouseEvent e) { ... }

}
+4
source

addMouseListener, addMouseMotionListener:

addMouseMotionListener(new MouseMotionListener() {

        @Override
        public void mouseMoved(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseDragged(MouseEvent e) {
            // TODO Auto-generated method stub

        }
    });

: D

0

Source: https://habr.com/ru/post/1733787/


All Articles