我的总结5《事件机制》

我的总结5《事件机制》


1.事件源
有哪些可以作为事件源?
Java中所有的图形界面组件都可以成为事件源对象。
动作发生哪一个组件对象上,那么该组件对象就是事件源。

2.监听器方法(事件类型)
事件源对象.addActionListener() ActionListener
注意:1.在输入框事件源对象中只能捕获回车键
2.在按钮事件源对象中只能捕获鼠标点击操作
addMouseListener() MouseListener
addMouseMotionListener() MouseMotionListener
addKeyListener() KeyListener

3.事件的处理者
最终执行的对象,这个类必须要实现事件接口。

4.事件的执行流程
1.确定事件源对象
2.确定要发生的是什么类型的事件。
3.给事件源添加监听器方法
4.实例化事件处理类的对象(定义类实现事件接口,并且实现接口中的方法)
5.给监听器方法绑定事件处理类对象

只要事件源发生监听器方法能捕获到的动作,那么方法就会捕获动作信息
以及事件源的相关信息,然后激活事件处理对象,将收集的信息和动作一并交给事件
处理对象,事件处理对象会根据信息自动调用事件处理方法。

5.参数传递:
事机机制中参数传递主要是使用构造方法进行传递,一般传递的都是地址


实验代码:加减乘除计算器

/**
* 定义一个计算器面类
*
* @author linzifan
*
*/
public class Login {

/**
* 程序的入口主函数
*/
public static void main(String[] args) {
// 实例化Login类的对象
Login login = new Login();
// 调用初始化界面的方法
login.initUI();
}

/**
* 初始化界面的方法
*/
public void initUI() {
// 实例化一个JFrame类的对象
javax.swing.JFrame jf = new javax.swing.JFrame();
// 设置jf窗体对象的属性值
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);

// 实例化一个数字1标签对象
javax.swing.JLabel lblName1 = new javax.swing.JLabel("数字1:");
// 将对象添加到窗体对象上
jf.add(lblName1);

// 实例化一个输入框对象,来输入数字1
javax.swing.JTextField txtName1 = new javax.swing.JTextField(20);
// 将对象添加到窗体对象上
jf.add(txtName1);

// 实例化一个数字2标签对象
javax.swing.JLabel lblName2 = new javax.swing.JLabel("数字2:");
// 将对象添加到窗体对象上
jf.add(lblName2);

// 实例化一个输入框对象,来输入数字2
javax.swing.JTextField txtName2 = new javax.swing.JTextField(20);
// 将对象添加到窗体对象上
jf.add(txtName2);

txtName1.getText();

txtName2.getText();

// 实例化一个按钮对象,加
javax.swing.JButton btnLogin1 = new javax.swing.JButton("加");
// 将对象添加到窗体对象上
jf.add(btnLogin1);

// 实例化一个按钮对象,减
javax.swing.JButton btnLogin2 = new javax.swing.JButton("减");
// 将对象添加到窗体对象上
jf.add(btnLogin2);

// 实例化一个按钮对象,乘
javax.swing.JButton btnLogin3 = new javax.swing.JButton("乘");
// 将对象添加到窗体对象上
jf.add(btnLogin3);

// 实例化一个按钮对象,除
javax.swing.JButton btnLogin4 = new javax.swing.JButton("除");
// 将对象添加到窗体对象上
jf.add(btnLogin4);

// 实例化一个加事件处理类的对象
Plus l1 = new Plus(txtName1,txtName2);

//给事件源,按钮加,添加一个动作监听器方法,绑定定义事件处理类的对象。
btnLogin1.addActionListener(l1);

// 实例化一个减事件处理类的对象
Subduct l2 = new Subduct(txtName1,txtName2);

//给事件源,按钮减,添加一个动作监听器方法,绑定定义事件处理类的对象。
btnLogin2.addActionListener(l2);

// 实例化一个乘事件处理类的对象
Multiply l3 = new Multiply(txtName1,txtName2);

//给事件源,按钮乘,添加一个动作监听器方法,绑定定义事件处理类的对象。
btnLogin3.addActionListener(l3);

// 实例化一个除事件处理类的对象
Divide l4 = new Divide(txtName1,txtName2);

//给事件源,按钮除,添加一个动作监听器方法,绑定定义事件处理类的对象。
btnLogin4.addActionListener(l4);

jf.setVisible(true);// 设置窗体为可见
}

}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;

public class LoginListener implements ActionListener {

public JTextField txt1;
public JTextField txt2;

public LoginListener(JTextField txt1 , JTextField txt2) {
this.txt1= txt1;
this.txt2= txt2;

}

public void actionPerformed(ActionEvent e) {

}

}


import java.awt.event.ActionEvent;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Plus extends LoginListener {

public Plus(JTextField txt1 , JTextField txt2) {
super(txt1,txt2);
}

public void actionPerformed(ActionEvent e) {
//获取输入框中的信息
String str1 = txt1.getText();
String str2 = txt2.getText();
float i1 = Integer.parseInt(str1);
float i2 = Integer.parseInt(str2);
float i = i1 + i2;
JOptionPane.showMessageDialog(null,"得数是:"+i);
}
}


import java.awt.event.ActionEvent;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Subduct extends LoginListener {

public Subduct(JTextField txt1 , JTextField txt2) {
super(txt1,txt2);
}

public void actionPerformed(ActionEvent e) {
//获取输入框中的信息
String str1 = txt1.getText();
String str2 = txt2.getText();
float i1 = Integer.parseInt(str1);
float i2 = Integer.parseInt(str2);
float i = i1 - i2;
JOptionPane.showMessageDialog(null,"得数是:"+i);
}

}


import java.awt.event.ActionEvent;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Multiply extends LoginListener {

public Multiply(JTextField txt1 , JTextField txt2) {
super(txt1,txt2);
}

public void actionPerformed(ActionEvent e) {
//获取输入框中的信息
String str1 = txt1.getText();
String str2 = txt2.getText();
float i1 = Integer.parseInt(str1);
float i2 = Integer.parseInt(str2);
float i = i1 * i2;
JOptionPane.showMessageDialog(null,"得数是:"+i);
}

}


import java.awt.event.ActionEvent;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Divide extends LoginListener {

public Divide(JTextField txt1 , JTextField txt2) {
super(txt1,txt2);
}

public void actionPerformed(ActionEvent e) {
//获取输入框中的信息
String str1 = txt1.getText();
String str2 = txt2.getText();
float i1 = Integer.parseInt(str1);
float i2 = Integer.parseInt(str2);
float i = i1 / i2;
JOptionPane.showMessageDialog(null,"得数是:"+i);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值