P1监听器
监听器的作用:
参照之前的按钮,按钮属于一种类,这个类里面的方法是已经写好的。
按钮具有点击功能,对于点击按钮之后具体执行什么代码,开发者是不知道的。点击不同的按钮,程序执行的结果也不同。
由此提出------对于行为的抽象化处理。也就是针对这个行为,只指定名字,不具体写方法。具体的方法由第三方开发者自己写(我们写)。行为抽象的方法是自带的,不需要第三方开发者写。这种只有函数的形式没有具体内容的函数就叫抽象函数,或者抽象方法。
ActionListener 动作监听器,这是一个接口。ActionListener的源代码可以看出代码量很少,函数只有形式没有内容。也就是说ActionListener是一个抽象函数/抽象方法。在点击按钮时,运行的函数形式已知,但是具体内容需要我们来写。
这个笔记就是介绍接口的使用方法
接口的关键字为interface,与类同级
接口的定义格式和类相似,具体格式为:public interface 接口名{} (目前不涉及定义接口的部分)
接口的优点:可以作为类型存在
接口的使用方法步骤:
1:创建一个类:用于 写出需要实现功能的接口。此处涉及到一个新的关键字:implements
格式:public class LoginListener implements ActionListener{}
其中LoginListener是类,implements是实现(也可以说是继承),ActionListener是接口
2:重写ActionListener接口中没写的方法体。具体的重写方法就是把ActionListener源代码{}中的内容复制过来,改;为{},然后在{}里面写我们需要实现功能的代码。(ctrl双击鼠标右键,可以看见ActionListener的源代码)
3:写方法体的具体代码
这三步实现了从抽象到具体的过程。
P2借助需要监听的按钮对象来使用上文创建好的类
首先要写一个页面LoginUI0211
,然后按照接口的使用方法步骤写代码
1:创建一个类,并继承ActionListener接口,此处要注意导入相应的包。报错是因为方法还没有具体写上
将ActionListener的源码中方法复制到LoginListener类中,改;为{}
这时候就不会报错了
在复制过来的这个方法中写上具体的内容,LoginListener类就写好了。这里的具体内容写的是打印“点击了按钮”
现在这个LoginListener类就可以被使用了。回到刚刚写好的界面类LoginUI0211中,在可视化的后面添加LoginListener类,也就是添加监听器。
添加监听器的步骤:
1 创建写好的监听器对象
2调用这个对象,比如用按钮调用,那么点击按钮之后就会打印“点击了按钮”
注:这里只给btnLogin按钮设置了监听器,btnRegister没有监听器。如果需要实现点击不同按钮显示不同的打印结果,可以借助事件信息类ActionEvent。
P3优化
事件信息类ActionEvent:打包事件发生时的信息。这个信息一般是关于事件发生的主体
比如针对按钮这个主体来说,会记录按钮被点击的时间,可以获取什么文字等等
事件信息类ActionEvent刚好是监听器源码复制过来的函数的参数,所以在这个函数中可以使用这参数
获取当前被点击的按钮上的字符串e.getActionCommand()
获取被点击的时间e.getWhen()
继续丰富点击按钮后的内容:点击不同的按钮显示不同的结果