接口与事件监听机制
一、接口
接口的定义:
定义接口的关键字:interface
定义格式:
public interface 接口名 extends 接口,... {
//定义常量
public static final 数据类型 常量名 = 值;
//定义抽象方法
public abstract 返回值数据类型 方法名(数据类型 参数名,...);
}
但是需要注意的是:
1.接口是一种特殊的类;
2.接口中的访问修饰符只有1个就是public;
3.接口默认提供的关键字有:public、static、final、abstract;
4.接口不能实例化对象。
当一个接口定义好时,需要定义另一个类类实现或者继承这个接口。格式是:
public class 类名 extends 类|抽象类 implements 接口,... {
}
在java中,类实现接口的关键字是:implements。
这里需要注意的是:
1、一个类可以继承一个或多个接口(这与类继承类不同,类继承类是单继承,而类继承接口可以是一个或者是多个)。
2、当类实现(继承)接口后,类必须要实现(重写)接口中所有的(接口的,接口父接口的)抽象方法。
接口的作用:
(1).要求所有的子类都要重写某一个方法时,可以利用接口来实现。
( 2).类的是继承是单继承,类实现接口就是继承接口,丰富类的继承关系。
二、抽象类
定义抽象类的关键字:abstract class
定义格式:
public abstract class 抽象类名 extends 类名|抽象类 implements 接口,... {
//定义常量
访问修饰符 static final 数据类型 常量名 = 值;
//定义抽象方法
public|protected|默认的 abstract 返回值数据类型 方法名(数据类型 参数名,...);
//定义属性
访问修饰符 数据类型 属性名;
//定义构造方法
访问修饰符 构造方法名(数据类型 参数名,...){
}
//定义方法
访问修饰符 返回值数据类型 方法名(数据类型 参数名,...){
}
}
抽象类是集成了接口和类的所有内容。
抽象类不能实例化对象。
三、事件监听机制
在程序中,只有在图形界面才能使用事件监听机制。并且事件监听机制主要包括三个方面的内容:1、事件源对象;2、事件监听方法;3、事件接口(事件处理类)。在这里我们以一个简单的登录界面为例来介绍事件监听机制。
1、事件源对象
1、1哪些内容可以成为事件源对象?
只有容器组件和元素组件才可以成为事件源对象;
例如:JFrame、JLabel、JTextField、JPasswordField、JButton。
换句话来说,就是只有并且所有的组件(容器组件与元素组件)才能成为事件源对象。
在登录界面上,我们的事件源对象就是登录按钮。这是因为我们希望当点击登录按钮这个操作时会弹出另一个窗体。
当然,首先我们要先创造一个登录界面。
代码展示:
public void initUI() {
//实例化窗体对象
JFrame frame=new JFrame();
//设置窗体对应的属性值
frame.setTitle("login");
frame.setSize(300,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setResizable(true);
//设置布局
FlowLayout f1=new FlowLayout(FlowLayout.CENTER, 5, 5);
frame.setLayout(f1);
//添加图片
ImageIcon icon = new ImageIcon("C:\\Users\\赖文华\\Pictures\\psb.jpg");
JLabel pictur=new JLabel(icon);
Dimension f=new Dimension(500,250);
pictur.setPreferredSize(f);
frame.add(pictur);
//添加文字
JLabel label1=new JLabel("账号:");
frame.add(label1);
//添加文本域
JTextField label2=new JTextField();
label2.setPreferredSize(new Dimension(200,30));
frame.add(label2);
//添加文字
JLabel label3=new JLabel("密码:");
frame.add(label3);
//添加密码框
JPasswordField label4=new JPasswordField();
label4.setPreferredSize(new Dimension(200,30));
frame.add(label4);
//添加按钮
JButton button=new JButton("登录");
frame.add(button);
//设置窗体可见
frame.setVisible(true);
}
1、2图形界面是由多个组件组成,如何确定图形界面上哪一个组件是事件源对象?
你的动作发生在哪一个组件上,并且还要有相应的操作,接着动作的组件 就是事件源对象。
所以在登录界面上,按钮就是事件源对象。
2、事件监听方法
首先,事件监听方法是由事件源对象提供的,不用我们重新定义,我们只需要给事件源对象加上它自己本生所具有的监听方法。当你给事件源对象添加上事件监听方法后,你在事件源对象上发生对应的动作时, 事件监听方法就会捕获动作,然后收集事件源对象的信息和动作信息,将这些信息 交给事件监听方法的参数对象进行处理。
button.addActionListener(f2);
3、事件处理接口
事件接口是由事件监听方法决定的。 事件接口的对象拿到信息后,会根据动作信息调用对应的事件处理方法,同时把信息 封装到对应事件处理方法的参数对象中,最后执行方法中的代码。
当时首先我们要在主函数中实例化事件处理类的对象。
代码:
LoginListener1 f2=new LoginListener1();
然后再另外重写一个类LoginListener类来实现。
代码:
public class LoginListener1 implements ActionListener{
public void actionPerformed(ActionEvent e) {
//获取账号与密码
String password=passwordInput.getText();
String name =nameInput.getText();
//判断账号与密码是否正确
if(name.equals("111")&&password.equals("000")) {
//实例化另一个窗体对象
JFrame frame1=new JFrame();
//设置窗体基本属性
frame1.setTitle("正确界面");
frame1.setSize(500,600);
frame1.setLocationRelativeTo(null);
frame1.setDefaultCloseOperation(3);
//增加一个文本提示
JLabel label6=new JLabel(" 账号、密码输入正确!");
frame1.add(label6);
frame1.setVisible(true);
//关闭原来的窗体
if (logi != null)
logi.dispose();
}
else {
//实例化错误窗体
JFrame frame2=new JFrame();
//设置基本属性
frame2.setTitle("错误界面");
frame2.setSize(300,200);
frame2.setLocationRelativeTo(null);
frame2.setDefaultCloseOperation(3);
//增加一个文本提示
JLabel label5=new JLabel(" 账号、密码输入错误!");
frame2.add(label5);
//设置可见
frame2.setVisible(true);
}
}
~~·
来源:CSDN
作者:weixin_44290217
链接:https://blog.csdn.net/weixin_44290217/article/details/88171782