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);}
}
运行结果如下:
如果内容对你有所帮助,点个赞吧~
欢迎小伙伴一起在评论区留言探讨。
原文作者:电光火石尔
原文地址: https://blog.csdn.net/m0_55685698/article/details/123444906
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/m0_55685698/article/details/123444906
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章