@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标的位置: " + e.getX() + "," + e.getY());
System.out.println("点击发生了");
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("按下");
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("松开");
}
这段代码没有 关于怎么判断 鼠标的活动
那么程序又是怎么判断 到底 鼠标此时此刻有什么活动呢
emmm 为什么 鼠标点击的时候 会产生mouseclick ,而不是 mouseReleased
这么给你解释吧,你这些方法是实现了接口MouseListener ,而MouseListener已经声明了这些方法,包含下面五个方法:
1.public void mouseClicked(MouseEvent e) 鼠标按键在组件上单击(按下并释放)时调用。
2.public void mouseEntered(MouseEvent e) 鼠标进入到组件上时调用。
3.public void mouseExited(MouseEvent e) 鼠标离开组件时调用。
4.public void mousePressed(MouseEvent e) 鼠标按键在组件上按下时调用。
5.public void mouseReleased(MouseEvent e) 鼠标按钮在组件上释放时调用。
你现在写的是个类的实现类,所以里面的方法是你帮他实现的,所以当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将MouseEvent 传递给该方法。这些事java自动帮你实现的,你要是感兴趣可以自己去查看源码
1.首先 组件 发生动作,它产生事件,事件被传递到相应的监听器(或者适配器)里,调用程序员编写的相应处理方法,从而响应事件!
例: 当组件(比如 Button)被点击时就会产生ActionEvent事件,事件被传递给一个 ActionListener 对象,再由ActionListener 定义的方法来响应处理事件!
另:适配器类是对监听器接口的简化,因为有的监听器接口
(如:WindowListener,MouseListener),它有一些方法可能是我们不用的,但为了迎合接口重写规则还必须写! 所以产生了适配器类,它也是抽象类,但类中方法都不是抽象的,所以我们可以挑我们用的方法进行重写!这样我门也能通过继承适配器类来实现监听器的功能,而且不用的方法不用写!节省时间嘛~
2.不是包含关系,是继承关系!(具体请查阅API文挡)
3.不是!(EventListener是在java.util包中!事件类Event在java.awt包中)
4.ActionEvent(包括所有Event)不是人为继承实现的!是系统自动调用的!
所有的Event(事件)都有自己的实现接口,事件发生的时候,系统会自动寻找到相应的接口实现类(已经添加事件监听的情况下),从而调用相应实现方法响应事件!
5.ActionEvent 是一个具体的事件,它是系统调用的!
ActionListener 是ActionEvent 的监听接口,用于实现类继承和方法重写!
具体继承情况如下:
java.lang.Object
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ActionEvent
什么事件发生的时候会准确的进入对应的方法,
为什么点击事件会跑到点击方法,而不跑到其他方法(他们这些函数处理名字,处理方式不一样,参数 ,返回值 都一样)他们是怎么实现这样的分辨的呢