上次,咋们做了一个仿QQ登入界面,现在咋们的目标就是让这个界面上的组件有所反应。
这个交互功能需要监听器这个方法来实现。
监听器的实现三步骤
1.事件源:当前动作所发生的组件。
2.监听器:动作方法监听器(监听器有很多类型,今天使用的是动作监听器)
3.绑定事件处理类
//数据类型:1.基本类型(8种) 2.引用类(自定义类型):类(class),接口(interface),数组
蓝色部分为上节课内容,黑色为续写内容
public class Loginrun {
public static void main(String[] args) {
Loginrun lo = new Loginrun();
lo.showUI();
}
public void showUI(){
javax.swing.JFrame jf = new javax.swing.JFrame();
jf.setSize(500, 450);
jf.setTitle("登录界面");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);
javax.swing.ImageIcon image = new javax.swing.ImageIcon ("D:\\java\\图片素材库\\1.jpg");
javax.swing.JLabel jla3 = new javax.swing.JLabel(image);
jf.add(jla3);
java.awt.Dimension dim3 = new java.awt.Dimension(500,150);
jla3.setPreferredSize(dim3);
jf.add(jla3);
javax.swing.JLabel jla1 = new javax.swing.JLabel("账号:");
jf.add(jla1);
javax.swing.JTextField jtf1 = new javax.swing.JTextField();
//Dimension
java.awt.Dimension dim1 = new java.awt.Dimension(370,30);
jtf1.setPreferredSize(dim1);
jf.add(jtf1);
javax.swing.JLabel jla2 = new javax.swing.JLabel("密码:");
jf.add(jla2);
javax.swing.JTextField jtf2 = new javax.swing.JTextField();
//Dimension
java.awt.Dimension dim2= new java.awt.Dimension(370,30);
jtf2.setPreferredSize(dim2);
jf.add(jtf2);
javax.swing.JButton jbu1 = new javax.swing.JButton("登录");
jf.add(jbu1);
javax.swing.JButton jbu2 = new javax.swing.JButton("新用户注册");
jf.add(jbu2);
javax.swing.JButton jbu3 = new javax.swing.JButton("取消");
jf.add(jbu3);
jf.setVisible(true);
//接口不能直接创建对象,需要重新定义类去继承接口,在子类中重写接口中的抽象方法。
//给登录按钮添加动作监听器
ButtonListener listener = new ButtonListener();
jbu1.addActionListener(listener);
listener.jtxf1=jtf1;
listener.jtxf2=jtf2;
}
}
//导入库中的类
import java.awt.event.ActionListener;
//事件处理类
//继承接口格式:public class 子类 implements 接口,接口...{}
//继承接口一定要在子类中重写所有的抽象方法
public class ButtonListener implements ActionListener{
//定义原始账号,密码 只能用字符串
public String user = "123"
public String code="123"
//咋们要设置一个文本框去保存传递过来的文本框对象
public javax.swing.JTextField jtxf1;
public javax.swing.JTextField jtxf2;
// 事件响应方法(设计响应功能)
public void actionPerformed(ActionEvent e){
//获取账号密码文本框
String userName = jtxf1.getText();
String userCode = jtxf2.getText();
//验证账号
if(user.equals(userName)&&code.equals(userCode)){
showUI1();}
else{showUI2();}
}
// 这里加入两个弹窗 设置两个窗体。
public void showUI1(){
javax.swing.JFrame jf2 = new javax.swing.JFrame();
jf2.setSize(500,400);
jf2.setLocationRelativeTo(null);
jf2.setDefaultCloseOperation(3);
javax.swing.JButton jbu1 = new javax.swing.JButton ("登入成功");
jf2.add(jbu1);
jf2.setVisible(true);
}
public void showUI1{
javax.swing.JFrame jf3 = new javax.swing.JFrame();
jf3.setSize(500,400);
jf3.setLocationRelativeTo(null);
jf3.setDefaultCloseOperation(3);
javax.swing.JButton jbu2 = new javax.swing.JButton ("登入失败");
jf3.add(jbu2);
jf3.setVisible(true);
}
}