Java DocumentEvent事件

Java DocumentEvent事件

文本区有一个实现Document接口的示例,这个实例被称为文本区所维护的文档,当文档发生变化时就能触发DocumentEvent事件

注册监视器

addDocumenListener(DocumentListener listen)//listen是实现了DocumentListener的类

DocumentListener接口
这个接口不是单接口,它有3个方法

  • public void changedUpdate(DocumentEvent e)//当文档发生改变的时候
  • public void removeUpdate(DocumentEvent e)//当文档被移除的时候
  • public void insertUpdate(DocumentEvent e)//当文档被插入的时候

用户从文本框1中输入单词,文本框2 就会自动排序的例子
首先创建一个Jframe的子类

import javax.swing.*;
import java.awt.*;
import java.lang.reflect.Field;

public class myWindow extends JFrame {
    JTextArea jTextArea1,jTextArea2;    //两个文本框
    myListener documentListener;
    myWindow(){
        setTitle("单词的自动排序");
        setBounds(600,300,600,500);
        Container con = this.getContentPane();
        con.setBackground(new Color(0x366728)); //设置颜色
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout()); //设置布局
        setVisible(true);
        init();
    }
    public void init(){
        jTextArea1 = new JTextArea(10,30);
        jTextArea2 = new JTextArea(10,30);
        jTextArea1.setFont(new Font("",Font.BOLD,15));
        jTextArea2.setFont(new Font("",Font.BOLD,15));
        jTextArea2.setEditable(false);
        add(new JScrollPane(jTextArea1));
        add(new JScrollPane(jTextArea2));
        documentListener = new myListener();    //监视器实例化
        documentListener.setView(this); //监视监视当前对象
        (jTextArea1.getDocument()).addDocumentListener(documentListener);
        //因为文本区有一个实现document接口的实例,所以要用那个实例添加监视器
        validate();
    }
}

然后创建实现DocumentListener接口的类

import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.util.Arrays;

public class myListener implements DocumentListener {
    myWindow view;  //窗口类型
    public void setView(myWindow view) {    //设置监视的对象
        this.view = view;
    }
    @Override
    public void insertUpdate(DocumentEvent documentEvent) {
        changedUpdate(documentEvent);
    }
    @Override
    public void removeUpdate(DocumentEvent documentEvent) {
        changedUpdate(documentEvent);
    }
    @Override
    public void changedUpdate(DocumentEvent documentEvent) {
        String str = view.jTextArea1.getText(); //获取文本框1的文本
        String regex = "[\\s\\d\\p{Punct}]+";   //正则表达式
        String word[] = str.split(regex);   //将符合正则表达式的分离后存到变量中
        Arrays.sort(word);  //用数组类调用自动排序方式进行排序
        view.jTextArea2.setText(null);  //每次输入都清空一次再重新排序
        for (String s:word){
            view.jTextArea2.append(s + ",");
        }
    }
}

最后在main类中测试

public class Example10_9 {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();
    }
}

最后的效果图
在这里插入图片描述

HTML5

HTML5新元素
HTML5迁移
HTML5 样式指南和代码约定

CSS

CSS字体
CSS 链接
CSS 列表

JavaScript

JavaScript 调试
JavaScript 样式指南和代码约定
JavaScript 闭包
JavaScript 最佳实践

CET4P161

paste
hammer
exceed
metric
vain
soak
compose
item
jar
resource
boom
military

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值