日期:2014-05-20  浏览次数:20778 次

一个按钮,单击下,可以算是ActionEvent. 也可以算 MouseEvent吗?
相应的,它们的接口也改成 ActionListener 和 MouseListener吗?

------解决方案--------------------
可以。
按照字面意义上来说,鼠标事件应该也是属于动作事件的。事实证明,可以这么替换,但效果不变。
但是,ActionEvent却是和ComponentEvent是平行类,但是MouseEvent是ComponentEvent的子类的子类。
所以,LZ最好对照API把它们的结构关系搞清楚。

------解决方案--------------------
个人认为是这样:
单击按钮可以生成多个事件:ActionListener MouseListener 等。但是如果要用MouseListener的话就要定义所有的mouse事件,MousePressed,MouseReleased...,或者使用匿名类关注其中一个事件。
------解决方案--------------------
对点击按钮来说,lz可以这么理解。不过正如2楼说的ActionEvent和MouseEvent之间没有直接联系,因为一个是语义类事件一个是底层事件
------解决方案--------------------
鼠标按钮按下用才 MouseListener
------解决方案--------------------
不是。是说,你按鼠标,首先,是鼠标动作,但是,那也是标准的动作。所以两个都有用。
------解决方案--------------------
探讨
按下也是激活了Button了
是吧?

------解决方案--------------------
探讨
你要分清鼠标上的按钮(真实的)和窗口上的按钮(虚拟的),窗口上按钮被你按了(不一定用鼠标,还能用空格键按)引发的是 ActionListener 相关的事件,鼠标在哪个组件上按了引发的是 MouseListener 相关的事件,与 MouseListener 相比 ActionListener 更高级些更抽象些,它把很多各种操作都当成一个动作(Action)去看待,从而引发动作事件。

------解决方案--------------------
可以考虑使用适配器模式实现的~
只是添加不同的监听器就可以了
然后实现不同监听时实现的方法