接口以及界面监听器


本篇博客用于讲述接口以及界面监听器在UI设计中的应用。承接上篇博文,在已设计好的界面上需要添加事件的监听机制,用于捕捉屏幕的输入、响应并给出相应的动作输出。
接下来介绍几个基本概念。

1、接口

1.1 定义

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法

1.2 接口的实现

  1. 接口的定义:

关键字: interface
格式: public interface 接口名{ }

  1. 接口的属性定义:

[]:其中的内容可以省略
[public static final] 属性类型 属性名 = 属性值;
static: 静态的,修饰的内容可以通过类名/接口名直接访问。
final: 不可修改的,修饰属性,则属性必须初始化。

  1. 接口的方法定义:

[public abstract] 方法返回值类型 方法名(参数类型 参数名,……);
abstract: 抽象的,修饰的方法不能有方法体。

  1. 接口的使用:
    接口不能直接创建对象
    需要接口类型的对象,则需要创建一个类,实现接口。
    注意: 类实现接口,需要实现接口中所有的方法

关键字: implements
格式: public class 类名 implements 接口名{ }

  1. 接口的作用:制定规则。

1.3 与类的区别

接口与类的相同点和不同点如下:

相同不同
一个接口可以有多个方法接口没有构造方法,接口中所有的方法必须是抽象方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。接口不能用于实例化对象。
接口的字节码文件保存在 .class 结尾的文件中。接口不是被类继承了,而是要被类实现。
接口相应的字节码文件必须在与包名称相匹配的目录结构中接口不能包含成员变量,除了 static 和 final 变量。

如上,抽象类和接口的区别总结如下:

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

1.4 接口特性

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

2、事件监听机制

2.1 基本概念

  • 事件监听机制:给事件源组件添加事件监听器,当事件源组件上发生相应类型的事件时,则自动的调用监听器中事件处理方法。
  • 事件:用外部设备操作组件。
  • 事件源组件:事件发生所在的组件
  • 事件监听器:java中为每一种类型的事件,都提供了一个对应类型的事件监听器.
事件类型具体含义事件监听器
鼠标事件用鼠标操作组件(关注点:操作的类型、位置)MouseListener
键盘事件用键盘操作组件KeyListener
动作事件包含鼠标点击按钮(关注点:点击的哪一个按钮)ActionListener

所谓的事件监听器,实质上就是一种接口。需要不能直接创建对象,而是需要创建类来实现其功能。

2.2 事件监听实现的步骤

结合上次的UI界面,此次对界面添加监听机制,使之可以响应界面操作。比如给出“登录成功”或者“用户名或密码错误——登录失败”提示。
对一个具体事件添加监听机制的步骤如下:

  • 第一步:确定事件源组件 登录按钮
  • 第二步:确定事件类型 动作事件
  • 第三步: 创建一个类,实现对应类型的接口
  • 第四步:创建监听器的对象,给事件源组件,添加监听器。

具体如下图:
在这里插入图片描述

3、代码实现以及结果输出

3.1 代码

  1. 监听器的方法及属性设置
public class loginUIlistener implements ActionListener {
	
	//声明属性,获取输入框的对象
	public JTextField nameinput;
	public JTextField passwordinput;

	public void actionPerformed(ActionEvent e) {
	
		//获取输入框的内容
		String nametext = nameinput.getText();
		String passwordtext = passwordinput.getText();
		
		//校验“账户、密码”输入是否正确
		if(nametext.equals("宝贝")&& passwordtext.equals("baobei")) {
			System.out.println("登录成功!");
			JOptionPane.showMessageDialog(null, "登录成功", "关闭", JOptionPane.ERROR_MESSAGE);
		}
		else{ 
			System.out.println("用户名或者账号不对!");
			JOptionPane.showMessageDialog(null, "登录失败", "关闭", JOptionPane.ERROR_MESSAGE);
		}
		
		System.out.println("");
	}
	
}
  1. 界面的监听器对象创建
//创建监听器对象
			loginUIlistener logLin = new loginUIlistener();
			//添加监听器
			loginbtn.addActionListener(logLin);
			//让监听器的输入框=界面的输入框
			logLin.nameinput = nameinput;
			logLin.passwordinput = passwordinput;
  1. 主方法实现
//主方法
	 public static void main(String[] args){
		 //创建界面对象
		 loginUI UI = new loginUI();
		 //现实界面
		 UI.showUI();
	 }

注意:JOptionPane.showMessageDialog是一个用于设置退出操作的类。直接根据API文档查询功能,设置参数即可。

3.2 结果输出

结合之前所设置的代码,尝试登陆。
在这里插入图片描述到这里算是一个简略版的登录界面设置啦!
欢迎小伙伴们的热情点赞和批评指正!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值