[英]Why MouseMotionListener's mouseMoved method generates event when component is set to visible?
I have added MouseMotionListener
to Component, about 5 parents above. 我已将
MouseMotionListener
添加到Component中,大约有5个以上的父级。 When I set main JWindow
setVisible(true);
当我设置主
JWindow
setVisible(true);
, then immediately mouseMoved(MouseEvent e)
method generates one event. ,然后
mouseMoved(MouseEvent e)
方法立即生成一个事件。 After that everything works fine. 之后,一切正常。 Could it be some bug?
可能是一些错误吗?
Some solution is possible: 一些解决方案是可能的:
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);
is done after validate();
在
validate();
之后完成validate();
and pack();
和
pack();
. 。 Mouse, of course sits in place, I do not touch it :) But it still generates one event..
鼠标当然就位,我不触摸它:)但是它仍然会产生一个事件。
Finally found the reason - before setting to visible, I was dispatching MouseEvent
( MouseEvent.MOUSE_ENTERED
) to Component
MouseListener
- it was a mistake. 终于找到了原因-在设置为可见之前,我正在将
MouseEvent
( MouseEvent.MOUSE_ENTERED
)分派给Component
MouseListener
这是一个错误。 But interesting to know, that dispatching this event also triggered mouseMoved
. 但有趣的是,调度此事件也触发了
mouseMoved
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.