事件机制:
关键词:事件源,监听器方法
实现事件的流程:
1.确定事件源
2.给事件源添加监听器方法
3.创建类事项对应接口,并实现抽象方法
4.创建事件处理者的对象,讲对象绑定到监听器方法上
接下来明确关键字的定义:
(1)事件源:
定义:所有触发对应动作的的图形界面组件对象(就是说动作发生
在谁上,谁就是事件源)
(2)监听器方法:对一个事件进行监听的对象,在事件源发生动作时,做出
反应。
监听器类型:
addActionListener() ActionListener 动作监听器接口
addMouseListener() MouseListener 鼠标监听器接口
addMouseMotionListener() MouseMotionLIstener 鼠标移动监听器接口
addKeyListener() KeyListener 键盘监听器接口
在监听器接到动作指令后便会调用一系列的方法,这就是监听器方法
(3)事件处理类:
接口是不能实例化对象的,所以要一个类来实现它,然后再通过类
来调用接口中的抽象方法,这就是事件处理者
流程:确定事件源-->创建事件处理类-->实例化监听器-->绑定监听对象-->
动作命令出现-->触发事件源-->触发监听器-->实现监听器方法
以下为代码:实现界面登陆
界面实现:
package cn.xxj.lesson05;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
* 简单登录界面类
*
* @author xxj
*
*/
public class Login {
// 程序的入口主函数
public static void main(String[] args) {
// 实例化一个Login类的对象
Login log = new Login();
// 调用初始化界面的方法
log.initUI();
}
private JTextField jtePwd = null;
// 初始化界面的方法
public void initUI() {
// 实例化一个JFrame类的对象
JFrame jf = new JFrame();
// 设置jf对象的属性值
jf.setTitle("简单登录界面");// 设置标题
// 设置jf对象的大小 单位是像素点
jf.setSize(300, 200);
// 设置禁止用户调整窗体的大小
jf.setResizable(false);
// 设置窗体显示在屏幕的中央
jf.setLocationRelativeTo(null);
// 设置关闭窗体的时候把程序退出
jf.setDefaultCloseOperation(3);
//实例化一个FlowLayout类的对象
FlowLayout fl = new FlowLayout();
//设置窗体的布局方式为流式布局
jf.setLayout(fl);
// 实例化一个JLabel对象
JLabel jlaName = new JLabel("账号:");
// 将对象添加到窗体上
jf.add(jlaName);
// 实例化一个JTextField对象
JTextField jteName = new JTextField(20);
jf.add(jteName);
// 实例化一个JLabel对象
JLabel jlaPwd = new JLabel("密码:");
// 将对象添加到窗体上
jf.add(jlaPwd);
// 实例化一个JTextField对象
jtePwd = new JTextField(20);
jf.add(jtePwd);
//实例化一个JButton类的对象
JButton jbuLogin = new JButton("登录");
jbuLogin.setActionCommand("Login");
jf.add(jbuLogin);
System.out.println("===>>>"+jtePwd);
//实例化一个事件处理类的对象
LoginListener ll = new LoginListener(jf,jteName,jtePwd);
//给事件源添加监听器方法
jbuLogin.addActionListener(ll);
jtePwd.addActionListener(ll);
// 设置窗体为可见的。
jf.setVisible(true);
String [] array = {
"MC","MR","MS","M+"
};
for(int i=0;i
jf.add(jbu);
}
}
}
事件处理者:
package cn.yjt.study131109;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
/**
* 登录的事件处理者类,该类要实现ActionListener接口
* @author xxj
*
*/
public class LoginListener implements ActionListener {
//定义账号和密码输入框对象属性
private JTextField jteName,jtePwd;
//登录界面窗体,现在是类的属性
private JFrame login;
/**
* 构造方法
* @param jteName账号输入框对象
* @param jtePwd密码输入框对象
*/
public LoginListener(JFrame login,JTextField jteName,JTextField jtePwd){
this.jteName = jteName;
this.jtePwd = jtePwd;
this.login = login;
}
/**
* 重写ActionListener接口中抽象事件处理方法。
* @param e事件对象,事件对象中会存储事件源对象和事件源的动作命令字符串
*/
@Override
public void actionPerformed(ActionEvent e) {
String name = jteName.getText();
String pwd = jtePwd.getText();
//输出 事件源的动作命令值。
//System.out.println(e.getActionCommand());
System.out.println("name = "+name+" pwd = "+pwd);
if(name.equals("admin") && pwd.equals("admin")){
JFrame jf = new JFrame("登录成功");
jf.setSize(new Dimension(600,500));
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
login.dispose();
}else{
JFrame jf = new JFrame("登录失败");
jf.setSize(new Dimension(200,200));
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
}
}
}
以上代码个人编写,如有雷同不胜荣幸!