现要实现在applet中某一组件上的鼠标移动操作,要求在按下是记录操作开始,然后拖动过程中进行相关处理,在鼠标放开时,结束对应操作!
public void mouseReleased(MouseEvent e) {
if(!e.isPopupTrigger()){this.isMapMove=false;System.out.println("mousePressed");}
}
public void mousePressed(MouseEvent e) {
if(!e.isPopupTrigger()){this.isMapMove=true;System.out.println("mousePressed");}}
public void mouseMoved(MouseEvent e) {
//执行相关处理
}
但奇怪的是经过我的测试,mouseReleased是紧跟着mousePressed执行的,即在这两个事件中系统无法执行mouseMoved事件,不知实际情况是否这样?如果不是,怎么解决我上述问题(前提是操作模式必须为点下鼠标后按住不放,在拖动过程中执行操作,在释放鼠标后取消执行)?谢谢各位!

解决方案 »

  1.   

    用MouseMotionListener的mouseDragged,从开始拖动开始触发,只要还按着并且还在动,就会触发,直到release掉,即使这个时候鼠标已经移出控件    JFrame jf = new JFrame();
        jf.addMouseMotionListener(new MouseMotionAdapter() {
          public void mouseDragged(MouseEvent e) {
            System.out.println("你还在拖我!!!" + e.getX() + "," + e.getY());
          }
        });
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jf.setVisible(true);