一,动作事件
·按钮类的作者是否知道你要使用按钮类创建的对象用于什么功能?不知道
·预设一个方法模板,底层实现了调用的逻辑
·点击按钮之后,就会调用这个方法,方法模板中没有任何可以执行的代码
·我们需要做的事情,创建一个类 引入这个模板 添加需要执行的代码
·将我们自己创建的类 创建一个对象,加载给按钮对象
·动作监听器: ActionListener
·实现步骤:
·1: 创建一个自己类,BtnAction 实现 ActionListener
·public classs BtnAction implements ActionListener{ }
·2: 将方法模板 复制这个类中,添加对应的代码
package comsum.oop1.yzy0704;
import java.awt.event.ActionEvent;
import java.awt.enent.ActionListener;
public class BtnAction implements ActionListener {
int count=0;
// 复制方法模板 改分号为大括号
public void actionPerformed(ActionEvent e){
// 写点击按钮时 要调用的代码
System.out.println("点击了按钮 " +count+" 次" );
count++;
}
}
·3:将我们自己创建的类BtnAction 创建一个对象,加载给按钮对象
二,区分不同的按钮
·事件对象:ActionEvent e 一件事的记录者
·包含了点击按钮时的相关数据 比如: 按钮的文本
·String ac = e.getActionCommand();
·通过获取的按钮文本 实现判断,使用 equals来判断两个字符串
if (ac.equals("登录")) {
System.out.println("点击了按钮 " + ac + count1 + " 次");
count1++;
if(name.equals("yzy")&&pwd.equals("yzy123")){
// 再写一个界面
JFrame jf = new JFrame();
jf.setTitle("登录成功");
jf.setVisible(true);
}else{
System.out.println("密码错误");
}
} else if (ac.equals("注册")) {
System.out.println("点击了按钮 " + ac + count2 + " 次");
count2++;
}
三,获取输入框中的文本:
·输入框: nameIn
·可以使用 String name = nameIn.getText();
·需要传递一份引用到btnAction中 nameIn2 / pwdIn2
界面代码:
package comsum.oop1.yzy0704 ;
import javax.swing.*;
import java.awt.*;
public class LoginUI {
public void showUI() {
// 创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("登录界面");
jf.setSize(400, 450);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点击关闭按钮时 退出进程
FlowLayout flow = new FlowLayout();
jf.setLayout(flow);
jf.setLocation(500, 200);
// 图片
ImageIcon icon = new ImageIcon(
"C:\\Users\\ZLYLF\\Desktop\\loginicon.png");
JLabel iconJla = new JLabel(icon);// 用于存放图标的标签
jf.add(iconJla);
// 标签 可以只显示文本或者图片
JLabel nameJla = new JLabel("账号:");
jf.add(nameJla);
// 单行文本输入框
JTextField nameIn = new JTextField(30);// 默认显示宽度为30字符宽
jf.add(nameIn);
JLabel pwdJla = new JLabel("密码:");
jf.add(pwdJla);
// 单行密码输入框
JPasswordField pwdIn = new JPasswordField(30);
jf.add(pwdIn);
JButton btn = new JButton("登录");
jf.add(btn);
JButton btn1 = new JButton("注册");
jf.add(btn1);
jf.setVisible(true); // 显示到屏幕上
// 创建按钮点击动作对象 ,加载给按钮 使用的是按钮自己的addActionListener
BtnAction btnAc = new BtnAction();
btn.addActionListener(btnAc);
btn1.addActionListener(btnAc);
// 传引用
btnAc.nameIn2 = nameIn;// 这行代码 实现之后 nameIn2 与 nameIn指向的是同一个输入框
btnAc.pwdIn2 = pwdIn;
}
comsum.oop1.zyf0704
javax.swing.
java.awt. public static void main(String[] args) {
LoginUI loginUI = new LoginUI();
loginUI.showUI();
}
}
监听器代码:
package cosum.oop1.yzy0704;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BtnAction implements ActionListener {
int count1 = 0;
int count2 = 0;
// 输入框的第二个变量名 别名
JTextField nameIn2;
JPasswordField pwdIn2;
// 复制方法模板 改分号为大括号
// 点击按钮 系统就调用这个方法
public void actionPerformed(ActionEvent e) {
// 写点击按钮时 要调用的代码
String ac = e.getActionCommand();
// 获取输入框 中的文本
String name = nameIn2.getText();
String pwd = pwdIn2.getText();
System.out.println("账号:" + name + " -- 密码:" + pwd);
if (ac.equals("登录")) {
System.out.println("点击了按钮 " + ac + count1 + " 次");
count1++;
if(name.equals("yzy")&&pwd.equals("yzy123")){
// 再写一个界面
JFrame jf = new JFrame();
jf.setTitle("登录成功");
jf.setVisible(true);
}else{
System.out.println("密码错误");
}
} else if (ac.equals("注册")) {
System.out.println("点击了按钮 " + ac + count2 + " 次");
count2++;
}
}
}