为什么当组件设置为可见时,MouseMotionListener的mouseMoved方法会生成事件?

时间:2013-08-30 23:26:55

标签: java swing mouseevent

我已将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();之后完成。鼠标,当然坐在原地,我不碰它:)但它仍然会产生一个事件..

1 个答案:

答案 0 :(得分:0)

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