在下面的代码中,mouseDragged未被识别。我做错了什么?
addMouseListener(new MouseInputAdapter() {
@Override
public void mouseDragged(MouseEvent e) { ... }
@Override
public void mousePressed(MouseEvent e) { ... }
});
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.
addMouseListener
内实现了 mouseDragged
,所以它未被识别。
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) { ... }
}
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