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

2023-01-02 00:00:00 监听器 文本框 自动更新

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

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);}
	}

运行结果如下:

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

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

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

 

    原文作者:电光火石尔
    原文地址: https://blog.csdn.net/m0_55685698/article/details/123444906
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章