Java中的事件处理

事件处理三个基本要素

(1)事件(2)事件源(3)监听器

事件处理的三个过程

(1)监听器的注册,调用组件的addXXXListener方法进行注册

(2)定义监听器类,实现与XXXEvent对应的XXXListener接口

(3)监听器类的实现,实现接口中的方法(public actionPerformed(ActionEvent e))

事件处理的两种方法,第一种是本类做监听器,另一种是其他类做监听器。

方法一:本类做监听器类(实现一个简单的计算器)

代码实现
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class jia_GUI_this implements ActionListener{
	private JFrame frame;
	private JLabel label;
	private JButton button;
	private JTextField text1,text2,text3;
	jia_GUI_this(){
		frame = new JFrame("用本类做监听器类");
		label = new JLabel("+");
		button = new JButton("=");
		text1 = new JTextField(20);
		text2 = new JTextField(20);
		text3 = new JTextField(20);
		frame.setSize(800,80);
		frame.setLayout(new FlowLayout());
		frame.add(text1);
		frame.add(label);
		frame.add(text2);
		frame.add(button);
		frame.add(text3);
		frame.setResizable(true);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		button.addActionListener(this);//本类做监听器类
	}
    
    //实现接口方法
	public void actionPerformed(ActionEvent e) {
		int add1 = Integer.parseInt(text1.getText().trim());//读取,转换为数字
		int add2 = Integer.parseInt(text2.getText().trim());//读取,转换为数字
		int sum = add1 + add2;
		text3.setText(Integer.toString(sum));
	}
}
public class jia_this {
	public static void main(String[] args) {
		jia_GUI_this x = new jia_GUI_this();
	}
}
结果如下

输入两个数字,点击等于号按钮即可实现加法。

实操步骤

(1)component.addActionListener(this)注册监听器

(2)public void actionPerformed(ActionEvent e)实现抽象方法

方法二:自定义类做监听器类(实现一个简单的计算器)

代码实现
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class jia_GUI_that {
	private JFrame frame;
	private JLabel label;
	private JButton button;
	private JTextField text1,text2,text3;
	jia_GUI_that(){
		frame = new JFrame("用本类做监听器类");
		label = new JLabel("+");
		button = new JButton("=");
		text1 = new JTextField(20);
		text2 = new JTextField(20);
		text3 = new JTextField(20);
		frame.setSize(800,80);
		frame.setLayout(new FlowLayout());
		frame.add(text1);
		frame.add(label);
		frame.add(text2);
		frame.add(button);
		frame.add(text3);
		frame.setResizable(true);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		button.addActionListener(new ButtonEvent(this));//其他类做监听器类,构造对象
	}
	public void actionPerformed(ActionEvent e) {
		int add1 = Integer.parseInt(text1.getText().trim());
		int add2 = Integer.parseInt(text2.getText().trim());
		int sum = add1 + add2;
		text3.setText(Integer.toString(sum));
	}
	public JTextField gettext1() {
		return this.text1;
	}
	public JTextField gettext2() {
		return this.text2;
	}
	public JTextField settext3() {
		return this.text3;
	}
}
class ButtonEvent implements ActionListener{
	jia_GUI_that evd;
	public ButtonEvent (jia_GUI_that e) {
		this.evd = e;
	}
	public void actionPerformed(ActionEvent e) {
		int add1 = Integer.parseInt(evd.gettext1().getText().trim());
		int add2 = Integer.parseInt(evd.gettext2().getText().trim());
		int sum = add1 + add2;
		evd.settext3().setText(Integer.toString(sum));
	}
}
public class jia_that {
	public static void main(String[] args) {
		jia_GUI_that a = new jia_GUI_that();
	}
}
结果如下

输入两个数字,点击等于号按钮即可实现加法。

实操步骤

(1)其他类做监听器类需要自己定义一个类,继承ActionListener

        class ButtonEvent implements ActionListener

(2)构造方法,GUI类传回(this类)

        component.addActionListener(new ButtonEvent(this));

        然后监听器类构造方法

        this.evd=e;

        接下来的e就拥有了GUI类的全部属性,只不过需要get和set方法

(3)实现抽象方法

        public void actionPerformed(ActionEvent e)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值