文本区的DucumentEvent事件

来源:互联网 发布:双头螺纹怎么编程 编辑:程序博客网 时间:2024/05/29 17:49

文本区可以触发DucumentEvent事件,DucumentEvent类在javax.swing.event包中。用户在文本区组件的UI代表的视图中进行文本编辑操作,使得文本区中的文本内容发生变化,将导致该文本区所维护的文档模型中的数据发生变化,从而导致DumumentEvent事件的发生。文本区调用addDumumentListener(DucumentListener listener)方法可以向文本区维护的文档注册监视器。监视器需要实现DumumentListener接口,该接口中有3个方法:

      public void changedUpdate(DocumentEvent e)

      public void removeUpdate(DocumentEvent e)

      public void insertUpdate(DocumentEvent e)

  文本调用getDocument()方法返回维护的文档,它是实现Document接口的一个实例。


例子:

     创建两个文本区和一个文本框。当用户在文本区左侧进行编辑操作时,文本区右侧将显示左侧文本区中所有和指定模式匹配的字符串。用户事先在文本框中输入[^\s\d\p{Punct}]+,即通过该模式获得左侧文本区的全部单词。


package DucumentEvent;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;public class B extends JFrame implements DocumentListener,ActionListener{JTextField jTextField;JTextArea text1,text2;//JSplitPane jSplitPane;Pattern p;//模式对象Matcher m;//匹配对象B(){text1=new JTextArea();text2=new JTextArea();jTextField=new JTextField("[^\\s\\d\\p{Punct}]+");jTextField.addActionListener(this);JPanel panel=new JPanel();panel.setLayout(new GridLayout(1, 2));panel.add(new JScrollPane(text1));panel.add(new JScrollPane(text2));add(panel, BorderLayout.CENTER);add(jTextField, BorderLayout.NORTH);validate();(text1.getDocument()).addDocumentListener(this);//向文档注册监视器setBounds(120, 120, 260, 270);setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubhangdleText();}@Overridepublic void insertUpdate(DocumentEvent e) {//接口方法// TODO Auto-generated method stubchangedUpdate(e);}public void hangdleText() {// TODO Auto-generated method stubtext2.setText(null);String s=text1.getText();p=Pattern.compile(jTextField.getText());//初始化模式对象m=p.matcher(s);while (m.find()) {text2.append("从"+m.start()+"到"+m.end()+":");text2.append(m.group()+":\n");}}@Overridepublic void removeUpdate(DocumentEvent e) {//接口方法// TODO Auto-generated method stubchangedUpdate(e);}@Overridepublic void changedUpdate(DocumentEvent e) {//接口方法// TODO Auto-generated method stubhangdleText();//调用hangdkeText方法}}


原创粉丝点击