java中监听器的简单介绍。窗口实现一个文本框随另一个文本框输入而实时自动更新。

要实现触发事件分为三步:

1.实现监听器这个接口

2.向A文本框框注册监听器  并传入要监听的事件对象(如点击)

3.定义事件处理的方法

事件源,监听器,事件对象三者概述:

在我们向事件源注册完监听器后,监听器开始监听。当事件源发生事件对象的时候,它会调用事件监听器的方法。

 案例展示:

在一个窗口中添加两个文本区,当我们在一个文本区中输入若干个数时,另一个文本区同时对你输入的数进行求和运算并求出平均值,也就是说随着你输入的变化,另一个文本区不断地更新求和及平均值。 

代码如下:

package a0312;

import javax.swing.*;
import java.awt.*;
import java.util.Scanner;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class ex1 {

	public static void main(String[] args) {

		MyJFrame frame = new MyJFrame();
		frame.setMyJFrame();
	}
}

class MyJFrame extends JFrame implements DocumentListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JTextField text1, text2;

	public void setMyJFrame() {

		setLayout(new FlowLayout());
		// 设置FlowLayout(流式)布局(窗口里面的内容不会随着窗口的改变而改变)

		setTitle("计算");

		text1 = new JTextField(25);   //文本对象实例化
		text2 = new JTextField(25);
		
		add(text1);
		add(text2);    //在窗口中添加文本对象

		(text1.getDocument()).addDocumentListener(this);
		/*	为文本域添加文件监听者
		这里的参数为实现DocumentListener接口的对象的引用。this表示在该类(MyFrame)中*/

		setBounds(400, 200, 400, 200);  //setBounds(x,y,width,height)
		setVisible(true);  //显示窗体
	}

	// 实现实时更新的方法
	// changedUpdate也是抽象方法
	public void changedUpdate(DocumentEvent e) { //在文本框输入时触发 (这里的参数e是事件对象)

		 String s = text1.getText();
	     Scanner reader = new Scanner(s); 

	     int count = 0;
	     double avg = 0,sum = 0;

	     while (reader.hasNextDouble()){  //以空格为分隔符,若下一个为double则返回true
	         count++;
	         sum+=reader.nextDouble(); //以空格作为分隔符,读取下一个double
	     }

	     avg = sum/count;

	     text2.setText("sum:"+sum+"\n"+" average"+avg);
	}
	
		//抽象类需要重写 你懂的
	    public void insertUpdate(DocumentEvent e) {changedUpdate(e);}
	 
	    public void removeUpdate(DocumentEvent e) {changedUpdate(e);}
	}

运行结果如下:

如果内容对你有所帮助,点个赞吧~

欢迎小伙伴一起在评论区留言探讨。

 

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电光火石尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值