我已将MouseMotionListener添加到Component中,大约有5个以上的父母。当我设置主JWindow setVisible(true);时,mouseMoved(MouseEvent e)方法立即生成一个事件。之后,一切正常。可能是一些错误吗?

一些解决方案是可能的:

public class SomeClass extends Component{

   private int mouseMoveCount;

   public SomeClass(){

   addMouseMotionListener(new MouseMotionAdapter() {
                @Override
                public void mouseMoved(MouseEvent e) {

                    if (mouseMoveCount > 1) {
                        //Do something
                        mouseMoveCount = 0;
                    }
                    mouseMoveCount++;
                }
            });
    }
}


jWindow.setVisible(true);validate();pack();之后完成。鼠标当然就位,我没有触摸它:)但是它仍然会产生一个事件。

最佳答案

终于找到了原因-在设置为可见之前,我正在将MouseEventMouseEvent.MOUSE_ENTERED)分配给Component MouseListener-这是一个错误。但有趣的是,调度此事件也触发了mouseMoved

09-11 18:09