接口与事件监听机制

人盡茶涼 提交于 2019-12-03 07:31:50

接口与事件监听机制

一、接口

接口的定义:
定义接口的关键字: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);
   
  }
 }
 ~~·

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!