事件监听:捕获在事件源对象上发生的动作。如:点击,进入,离开……
事件监听需要用事件监听方法:
在界面上的事件源可以调用事件监听方法。
事件监听方法可以捕获事件源对象上发生的动作,然后收集事件源对象的信息和动作信息,然后将这些信息交给参数对象处理。
事件监听方法:
addActionListener(ActionListener l)---捕获类似按钮组件上的鼠标点击和捕获类似输入框组件上键盘回车动作;
addMouseListener(MouseListener l)---鼠标动作监听方法
事件监听方法的参数对象就是事件接口,可以根据在组件上动作来调用相应的方法,得到相应的反馈。
事件接口:
ActionListener 动作事件接口
MouseListener 鼠标事件接口
例:在登录界面上输入账号和密码,然后点击登录按钮,对输入的账号和密码进行验证,
如果正确则显示一个新窗体,然后关闭登录窗体;
如果不正确则显示一个错误窗体。
1,定义事件处理类jianting,该类实现ActionListener动作事件接口,重写接口中的所有抽象方法(用不上的方法内容可以为空)。
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class jianting implements ActionListener {//实现ActionListener接口
private JFrame jf;
private JTextField jt;
private JPasswordField jp;
public jianting (JFrame jf,JTextField jt,JPasswordField jp)//类的构造函数
{
this.jf=jf;
this.jt=jt;
this.jp=jp;
}
public void actionPerformed(ActionEvent e) {//重写接口内的抽象方法:如果按钮组件上鼠标点击了,则调用此方法
System.out.println(e.getActionCommand());//得到事件源上的信息
//获取输入框中输入的账号和密码
String s="123456";
String l="123456";
if(s.equals(jt.getText())&&l.equals(jp.getText()))//如果输入正确
{
JFrame frame=new JFrame("新界面");//生成新的界面
frame.setSize(500,500);
frame.setDefaultCloseOperation(3);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
jf.dispose();
}
else//如果输入错误
{
JFrame frame=new JFrame("错误");//生成错误显示的界面
frame.setSize(500,500);
frame.setDefaultCloseOperation(3);
frame.setLocationRelativeTo(null);
JLabel jl=new JLabel("账号或密码错误!");
Font font =new Font("ok",3,30);
jl.setFont(font);
frame.add(jl);
frame.setVisible(true);
}
}
}
2.生成登陆界面后,实例化事件处理类jianting的对象,对象名jt。给事件源登录按钮对象,添加addActionListener()动作监听方法,指定监听方法的事件处理类对象为jt。
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class denglu {
public static void main(String[] args) {
denglu flie=new denglu();
}
public void show(){
JFrame frame = new JFrame();
frame.setTitle("登录界面");
frame.setSize(400,600);
frame.setDefaultCloseOperation(3);
frame.setLocationRelativeTo(null);
FlowLayout lay=new FlowLayout();
frame.setLayout(lay);
ImageIcon im=new ImageIcon("E:\\好玩\\34569892.jpeg");
JLabel jl=new JLabel(im);
Dimension jl1=new Dimension(400,250);
jl.setPreferredSize(jl1);
frame.add(jl);
JLabel jla=new JLabel("账号:");
frame.add(jla);
JTextField jtf=new JTextField();
Dimension di=new Dimension(300,50);
jtf.setPreferredSize(di);
frame.add(jtf);
JLabel jlab=new JLabel("密码:");
frame.add(jlab);
JPasswordField jp=new JPasswordField();
Dimension dim=new Dimension(300,50);
jp.setPreferredSize(dim);
frame.add(jp);
JButton jb=new JButton("登陆");
Dimension dime=new Dimension(100,60);
jb.setPreferredSize(dime);
frame.add(jb);
frame.setVisible(true);
jianting jt= new jianting(frame,jtf,jp);//实例化事件处理类jianting的对象,对象名jt
jb.addActionListener(jt);//事件源按钮对象调用addActionListener()动作监听方法,指定监听方法的事件处理类对象为jt。
}
}