事件处理
事件:鼠标点击按钮就是一次事件
1.监听到事件
鼠标会拍照上传给电脑
电脑会分析照片前后之间的区别,以此判断鼠标的移动
将移动的结果反馈到显卡上,将鼠标的光标绘制到对应位置
系统会将位置传输给对应的运行中的界面程序
如果重合了,并且鼠标发出了按下的指令,确定按钮被点击了
按下按钮后,调用一段代码去执行
注意:以上步骤均为已有代码完成,无需自己编写
2.需要实现一个监听处理类,在其中编写按下按钮之后的代码 (共五步)
事件监听处理接口:
动作监听处理接口:ActionListener
自己实现一个监听处理类
1.创建一个新的类,实现ActionListener接口
public class ➕监听处理类类名➕implements ActionListener {}
public class CuUI implements ActionListener {}2.将这个接口的方法复制到类中并把小括号改为大括号
public void actionPerformed(ActionEvent e){}
3.在方法中写一段按下按钮后执行的代码(即在大括号中填写执行的代码)
JTextField num; public void actionPerformed(ActionEvent e) { System.out.println("点击了按钮"); String ac=e.getActionCommand(); System.out.println("点击了"+ac); if(ac.equals("+")||ac.equals("-")||ac.equals("×")||ac.equals("÷")){ System.out.println("点击了运算符"); }else if(ac.equals("C")){ num.setText(""); }else if(ac.equals("=")){ System.out.println("结果是:"); }else{ System.out.println("点击了数字:"+ac); String end=num.getText(); num.setText(end+ac); } }使用写好的监听处理类:
1.回到创建按钮对象的位置,创建一个监听处理类的对象
监听处理类类名 对象名=new 监听处理类类名();
CuUI cu=new CuUI();2.使用按钮对象的addActionListener方法,添加这个新创建的对象,完成绑定
按钮对象名.addActionListener(新创建对象名);
bt.addActionListener(cu);注意:ActionEvent e是动作事件参数记录你点击按钮时的相关信息
创建多个按钮,使用同一个监听处理对象监听
String 对象名=e.getActionCommand();
String ac=e.getActionCommand();获取当前输入框的文本
String 类名=使用输入框对象名(JTextField/JPassworldField类的对象名) ➕getText();
num.setText(end+ac);在监听处理类中声明这几个输入框的对象变量名
JTextField num;回到创建监听处理类的对象的地方,使用对象变量名调用这几个输入框的对象变量名使其初始化
cu.num=num;登陆注册判断(条件语句中包含条件语句)
若点击登陆,则...(若点击的变量名equals("登陆"))
若点击注册,则...(若点击的变量名equals("注册"))
等于号用equals
以计算器为例
创建监听处理类
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CuUI implements ActionListener { JTextField num; public void actionPerformed(ActionEvent e) { System.out.println("点击了按钮"); String ac=e.getActionCommand(); System.out.println("点击了"+ac); if(ac.equals("+")||ac.equals("-")||ac.equals("×")||ac.equals("÷")){ System.out.println("点击了运算符"); }else if(ac.equals("C")){ num.setText(""); }else if(ac.equals("=")){ System.out.println("结果是:"); }else{ System.out.println("点击了数字:"+ac); String end=num.getText(); num.setText(end+ac); } } }创建计算器类
import javax.swing.*; import java.awt.*; public class NcalculationUI { public void showUI(){ String[]texts={ "7","8","9","÷", "4","5","6","+", "1","2","3","-", "0","C","×","=" }; CuUI cu=new CuUI(); JFrame jf=new JFrame(); jf.setTitle("计算器"); jf.setLocation(400,300); jf.setDefaultCloseOperation(3); jf.setSize(400,300); JTextField num=new JTextField(); Dimension dim=new Dimension(355,40); num.setPreferredSize(dim); jf.add(num); FlowLayout flow=new FlowLayout(); jf.setLayout(flow); cu.num=num; for(int i=0;i<texts.length;i++){ JButton bt=new JButton(texts[i]); Dimension dim1=new Dimension(85,40); Color co=new Color(74, 236, 189); bt.addActionListener(cu); bt.setBackground(co); bt.setPreferredSize(dim1); jf.add(bt); jf.setVisible(true); } } static void main(){ NcalculationUI nc=new NcalculationUI(); nc.showUI(); } }结果