接口和事件监听实现

接口

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

接口的属性定义:
格式: 【public static final】 属性类型 属性名 = 初始值;
  【】中的关键字,写或者不写效果完全一样。
static:静态的,修饰的属性和方法可以通过类名/接口名直接访问。
final:不可改变,修饰属性,则属性必须初始化。

接口的方法定义:
格式: 【public abstract】 方法返回值类型 方法名(参数类型 参数名,……);
abstract:抽象的,修饰方法,则方法不能有方法体。

接口的对象:
    接口是不能创建对象的。
    需要接口类型的对象,可以创建一个类,实现接口:
    关键字: implements
    格式: public class 类名 implements 接口名{ }
注意: 普通类实现接口,需要重写接口所有的方法

接口的作用:
    相当于规则。

事件监听机制

    给事件源添加事件监听器,当事件源上发生相应类型的事件时,则自动的调用事件监听器中的事件处理方法。

事件:用外部设备操作组件。
    鼠标事件:用鼠标操作组件(关注:鼠标操作的位置、类型)
    键盘事件:用键盘操作组件
    动作事件:用鼠标点击按钮(关注:按钮是否点击、点击的是哪一个按钮)

事件源:当前事件发生的组件。

事件监听器:每一种类型的事件,都有一个对应类型的事件监听器。
    鼠标事件监听器: MouseListener
    键盘事件监听器: KeyListener
    动作事件监听器: ActionListener

事件监听的实现:
第一步:确定事件源
第二步:确定事件类型
第三步:创建一个类,实现对应类型的监听器接口
第四步:创建监听器的对象,给事件源添加监听器

练习:

1、完成登录校验
2、登陆失败,给出提示(JOptionPane)
3、登录成功,关闭当前界面,打开一个新界面

代码实现:

public class UItest{
	public void UIshow(){
	    JFrame jf=new JFrame("登陆界面");
		//流式布局
		FlowLayout flowlayout=new FlowLayout();
		jf.setLayout(flowlayout);
		//设定界面初始大小
		jf.setSize(300, 400);
		//添加图片
		ImageIcon icon=new ImageIcon("image/logo.png");
		JLabel logo=new JLabel(icon);
		jf.add(logo);
		//添加用户名、密码标签
		JLabel cid=new JLabel("用户名");
		JLabel password=new JLabel("密    码");
		JPasswordField passwordinput=new JPasswordField(20);
		JTextField cidinput=new JTextField(20);
		//添加勾选框
		JCheckBox cidbox=new JCheckBox("记住用户");
		JCheckBox pwbox=new JCheckBox("记住密码");
		//添加用户名、密码标签和输入框到界面
		jf.add(cid);
		jf.add(cidinput);
		jf.add(password);
		jf.add(passwordinput);
		//添加勾选框
		jf.add(cidbox);
		jf.add(pwbox);
		//添加登陆按钮
		JButton login=new JButton("登陆");
		//把登陆按钮添加到界面上
		jf.add(login);
		//点击关闭时关闭程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//创建监听器
		LoginListener loginL = new LoginListener();
		//给按钮添加监听器
		login.addActionListener(loginL);
		loginL.cidinput = cidinput;
		loginL.passwordinput = passwordinput;
		loginL.jf=jf;
		//显示界面
		jf.setVisible(true);
	}
	
	public static void main(String[] args){
		UItest ui=new UItest();
		ui.UIshow();
	}
}

public  class LoginListener implements ActionListener{
	JPasswordField passwordinput;
	JTextField cidinput;
	JFrame jf;
    public void actionPerformed(ActionEvent e){
		String text=cidinput.getText();
		System.out.println("用户名:"+text);
		char[] chars = passwordinput.getPassword();
		String password = new String(chars);
		System.out.println("密     码:"+password);
		if(text.equals("1")&&password.equals("1")){
			MainFrame mf= new MainFrame();
			mf.MN();
			jf.dispose();
			}
		else{
			JOptionPane.showMessageDialog(null, "登陆失败");
	   }
	}
}

public class MainFrame {
     public void MN(){
		JFrame JF=new JFrame("登陆成功");
		FlowLayout flowlayout=new FlowLayout();
		JF.setLayout(flowlayout);
		//设定界面初始大小
		JF.setSize(300, 400);
		JLabel XXX=new JLabel("登陆成功");
		JF.add(XXX);
		JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JF.setVisible(true);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值