要实现触发事件分为三步:
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);}
	} 
运行结果如下:

如果内容对你有所帮助,点个赞吧~
欢迎小伙伴一起在评论区留言探讨。










