事件机制

事件机制
事件处理是界面处理的基本功能,一个事件处理流程可由三部分组成:事件源,事件监听器,以及事件处理类.
1.事件源
简单来说,你的动作发生在哪一个组件对象上,那么该组件对象就是事件源。比如你在一个按钮对象JButton上点了一下,那么这里这个按钮对象就是事件源.
2.事件监听器
当事件源发生动作时,系统会发出事件通知,这个事件通知会被做为一个EventObject(事件对象)通知给对这个事件有兴趣的处理对象EventListener(事件监听器),给事件源添加相应的事件监听器方法。事件监听器方法激活后捕获发生动作的事件及其信息,信息收集起来后一起存入一个**Event的对象中,自动的调用事件处理者。
3.事件处理类
事件最终处理的地方,要定义相应的事件处理方法,首先定义一个类,然后实现事件接口,再实现接口中的方法。
总的来说,就是给事件源添加动作监听器方法,绑定事件处理类的对象,实现事件处理类。当在事件源上发生监听器方法能捕获的动作后,监听器方法就会被激活,然后收集事件源和事件对象的信息,交给事件处理类对象,事件处理类兑现给自动执行事件处理方法,完成事件的执行操作。
示例代码:
定义一个登陆界面类
public class Login {
         public static void main(String[] args) {
Login login = new Login();
                login.initUI();
}
         public void initUI() {
javax.swing.JFrame jf = new javax.swing.JFrame();
jf.setTitle("第一个图形界面");
jf.setSize(300, 200);
jf.setDefaultCloseOperation(3);
jf.setLocation(200, 200);
jf.setResizable(false);
                       java.awt.FlowLayout fl =new java.awt.FlowLayout();
jf.setLayout(fl);
                               javax.swing.JLabel lblName = new javax.swing.JLabel("账号:");
               jf.add(lblName);
                  javax.swing.JTextField txtName = new javax.swing.JTextField(20);
txtName("0");
jf.add(txtName);
                               javax.swing.JButton btnLogin = new javax.swing.JButton("登         录");// 事件源
btnLogin.setActionCommand("Login");
jf.add(btnLogin);
LoginListener ll = new LoginListener(txtName,jf);
//给事件源添加一个动作监听器方法,绑定事件处理类的对象ll
btnLogin.addActionListener(ll);
//txtName.setActionCommand("账号输入框对象");
txtName.addActionListener(ll);
                                jf.setVisible(true);
}
}
  //登录事件处理类,该类要实现ActionListener接口
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class LoginListener implements ActionListener {

private JTextField txtName;

private JFrame login;

public LoginListener(JTextField txtName,JFrame login){
this.txtName = txtName;
this.login = login;
}
public void actionPerformed(ActionEvent e){
//输出  e.getActionCommand()
                //得到是按钮的动作命令,如果按钮未设置动作命令,则获取按钮上显示的值
System.out.println(e.getActionCommand());

//获取输入框中的值
String name = txtName.getText();

//判断输入的账号是否是admin
if(name.equals("admin")){
//显示一个新的窗口
JFrame jf = new JFrame("简单画板");
jf.setSize(new Dimension(400,400));
jf.setLocation(300, 300);
jf.setDefaultCloseOperation(2);
jf.setVisible(true);
}else{
//显示一个消息提示框
JOptionPane.showMessageDialog(login, "你输入的账号错误,请重新输入!");
}
}
}

你可能感兴趣的:(事件机制)