事件监听、焦点--java进阶day03
1.事件
按钮是组件,点击后就会重新游戏
对于这种点击了组件之后,有逻辑触发的操作,就是事件
2.事件中的专有名词
绑定监听也就是绑定监视,是真正组织代码逻辑的地方
要有绑定监听就需要监听器,今天学习两种监听器--ActionListener、KeyListener
3.ActionListener
--监听鼠标点击和空格按下
使用方法:
找到要使用的事件源,如:按钮,用按钮调用addActionlistener方法,该方法要ActionListener(接口),参数要接口,给实现类对象,又因为抽象方法少,所以使用匿名内部类![]()
当我们点击按钮时,控制台会出现对应的文字
.
4.KeyListener
在调用监听器之前要明白对谁做监听,这里是对窗体做监听,我们希望在按下键盘的各个按键时,窗体能够知道
通过窗体调用addKeyListener,参数是KeyListener(接口),并且有三个抽象方法,为了方便继续用匿名内部类
写完addKeyListener后出现了三个重写的方法
press监控按键按下,release监控按键释放
5.KeyEvent中的getKeyCode()
在keyPressed方法里有事件对象Keyevent,这个事件对象当中封装了一些方法,我们需要了解getKeycode方法
getKeyCode会有int类型的返回值,返回的是键盘中每一个按键对应的数字
根据这个方法,我们就可以判断用户按下的是键盘的哪个按键
6.KeyType
只能监听键盘中的一部分按键,特殊按键无法监听,较为鸡肋 如下图,注释中的按键无法监听
7.事件冲突问题--焦点
如图,我们设置动作监听和键盘监听,二者都与空格有关,此时我们按空格就存在事件冲突,当我们按空格时,会走哪一个监听器呢?
很明显,走的是动作监听,键盘监听失效了
在回答这个问题之前,我们需要知道一个知识--焦点
按钮这个组件很特殊,创建出来会自动携带焦点,这时,系统的所有注意力都在按钮上,我们按空格,和按钮有关,因此系统走动作监听
但是我们根本不要系统将注意力集中在按钮上,按钮是给用户去点击的,要系统什么事,所以我们要取消按钮的焦点
8.取消焦点--setFocusable(false)
仔细看,当按钮存在焦点时,上面的字会被框起来,取消焦点后则消失了