java中接口和事件监听器的深入理解
一:接口
接口在我们生活中无处不在,通过一个usb接口,我们可以通过u盘传输数据,这个接口是被定义过的,只有指定的类型能够使用这个接口,且通过这个接口我们传输的数据不会被破坏。
而在java中接口作用类似,定义一个具有特定特点的接口,在合适的地方引用它,执行所对应的功能,这样能够实现代码的分离。
下面我们来看一下接口的定义:
关键字:interface
格式:public interface 接口名{ }
接口的属性:
[public static final]属性类型 属性名=属性值;
static:静态的,修饰的内容可以通过类名或接口名直接访问。
final:不可改变的,修饰属性,则属性必须初始化。
[ ]里的内容可以省略
接口的方法:
[public abstract]方法返回值类型 方法名(参数类型 参数名)
abstract:抽象的,修饰方法,则方法不能有方法体。
[ ]中内容可以省略
接口的使用:
接口不能创建对象,需要接口类型的对象则需要创建一个类,从而实现接口
关键字:implements
格式:public class 类名 implements 接口名{ }
**注意:在类中实现接口时,必须实现接口中所有的方法**
总结来说,接口相当于制定了一种规则,只有符合这种规则了才能进入相应的接口。
二:事件监听机制
想象一下,比如在生活中,有一个摄像头在监视着小明,监督他好好学习,如若发现他在做别的事情则会发出警告提示让他继续学习,而在java中原理也是一样。
给事件源组件添加事件监听器,当事件源组件上发生相应类型的事件时,则自动的调用监听器中的内容。
在电脑上常见的事件类型有三种
鼠标事件:用鼠标操作组件(鼠标的移动,点击,松开)
键盘事件:用键盘操作组件(按动键盘的按键)
动作事件:包含鼠标点击按钮,键盘确认等。
事件源组件:事件发生所在的组件,比如在一个创建好的画图板上。
事件监听器:java中为每一种类型的事件都提供了一个对应类型的事件监听器。
鼠标事件监听器:MouseListener
键盘事件监听器:KeyListener
动作事件监听器:ActionListener
事件监听器的实现:
第一步:确定事件源组件
例如一个按钮
第二步:确定事件类型
点击按钮则为动作事件
第三步:
创建一个监听器类,实现对应类型的监听器接口
第四步,在源程序创建监听器对象,给事件源组件添加事件监听器。
下面我们看一个登陆界面的实例
这一段是建立一个登陆界面
public class UI { /** * */ public void showIU(){ //建立新界面 JFrame frame=new JFrame(); frame.setSize(600, 900); //用户点击关闭窗口时关闭界面 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //流式布局 FlowLayout layout=new FlowLayout(); frame.setLayout(layout); //插入账号文本框 JTextField register=new JTextField(30); frame.add(register); //标签1 JLabel label1=new JLabel("注册账号"); frame.add(label1); //密码 JPasswordField word=new JPasswordField(30); frame.add(word); //标签2 JLabel label2= new JLabel("找回密码"); frame.add(label2); JCheckBox checkbox=new JCheckBox("记住密码 "); frame.add(checkbox); //设置复选框大小 Dimension check =new Dimension(200,35); checkbox.setPreferredSize(check); //加入接口类 lisener lisen=new lisener(); //给按钮添加监听器 butt.addActionListener(lisen); //让监听器的文本框和处理的文本框对应 lisen.nameinput=register; lisen.passinput=word; //让监听器的框与此相同 lisen.jiemian=frame; word.addActionListener(lisen); /* //加入接口 Listener2 lisen1=new Listener2(); //添加监听器 word.addKeyListener(lisen1); //对应文本框和密码框 lisen1.name1=register; lisen1.pass1=word; lisen1.frame=frame; */ //设置界面可见 frame.setVisible(true); } public static void main(String[] args){ UI ui=new UI(); ui.showIU(); } }
这是我们建立好的登陆界面
我们从中建立了两个接口,两个动作监听器分别监听按钮是否点击和是否按键盘上的按键,从此出现相应结果。
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.JOptionPane; import javax.swing.JFrame; public class lisener implements ActionListener{ JTextField nameinput; JTextField passinput; JFrame jiemian; public void actionPerformed(ActionEvent e){ System.out.println("鼠标点击了"); String name=nameinput.getText(); String password=passinput.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陆成功"); jiemian.dispose(); } else{ System.out.println("登陆失败"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null, "登陆失败", "警告", JOptionPane.ERROR_MESSAGE); } } }
这是一个鼠标监听器,当按钮被点击时发出提示框登陆成功或失败。
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JTextField; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Listener2 implements KeyListener{ JTextField name1; JFrame frame; JTextField pass1; public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub System.out.println("鼠标点击了"); String name=name1.getText(); String password=pass1.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陆成功"); frame.dispose(); } else{ System.out.println("登陆失败"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null, "登陆失败", "警告", JOptionPane.ERROR_MESSAGE); } } }
键盘监听器,在输入密码之后按下回车,获得相应提示。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
栏 目:Java
下一篇:Java方法覆盖重写实现原理解析
本文标题:java中接口和事件监听器的深入理解
本文地址:https://www.xiuzhanwang.com/a1/Java/8822.html
您可能感兴趣的文章
- 01-10Java实现动态模拟时钟
- 01-10Springboot中@Value的使用详解
- 01-10利用Java实现复制Excel工作表功能
- 01-10JavaWeb实现邮件发送功能
- 01-10java基于poi导出excel透视表代码实例
- 01-10Java实现动态数字时钟
- 01-10基于Java验证jwt token代码实例
- 01-10java实现液晶数字字体显示当前时间
- 01-10浅谈Java中真的只有值传递么
- 01-10Java动态显示当前日期和时间
阅读排行
本栏相关
- 01-10Java实现动态模拟时钟
- 01-10Springboot中@Value的使用详解
- 01-10JavaWeb实现邮件发送功能
- 01-10利用Java实现复制Excel工作表功能
- 01-10Java实现动态数字时钟
- 01-10java基于poi导出excel透视表代码实例
- 01-10java实现液晶数字字体显示当前时间
- 01-10基于Java验证jwt token代码实例
- 01-10Java动态显示当前日期和时间
- 01-10浅谈Java中真的只有值传递么
随机阅读
- 01-11ajax实现页面的局部加载
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10delphi制作wav文件的方法
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10C#中split用法实例总结
- 01-10SublimeText编译C开发环境设置
- 04-02jquery与jsp,用jquery
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文