Как распознать события mouseDragged и mousePressed в одном слушателе? - PullRequest
3 голосов
/ 21 февраля 2010

В следующем коде mouseDragged не распознается.Что я делаю не так?

addMouseListener(new MouseInputAdapter() {

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

});

Ответы [ 3 ]

7 голосов
/ 21 февраля 2010
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.
4 голосов
/ 21 февраля 2010

Это не распознано, потому что вы реализуете mouseDragged внутри addMouseListener.

mouseDragged запускается MouseMotionListener, а mousePressed запускается MouseListener.

Поэтому вам нужно реализовать оба MouseListener и MouseMotionListener и соответственно добавить правильного слушателя.

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) { ... }

}
0 голосов
/ 21 февраля 2010

не используйте 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

...