zoukankan      html  css  js  c++  java
  • java中监听document的变化

     1 package com.baorant;
     2 
     3 import java.awt.event.KeyAdapter;
     4 import java.awt.event.KeyEvent;
     5 import java.util.LinkedList;
     6 
     7 import javax.swing.Box;
     8 import javax.swing.BoxLayout;
     9 import javax.swing.JFrame;
    10 import javax.swing.JLabel;
    11 import javax.swing.JPanel;
    12 import javax.swing.JScrollPane;
    13 import javax.swing.JTextArea;
    14 import javax.swing.event.DocumentEvent;
    15 import javax.swing.event.DocumentListener;
    16 import javax.swing.text.BadLocationException;
    17 import javax.swing.text.Document;
    18 import javax.swing.undo.UndoableEdit;
    19 
    20 public class JavaDemo {
    21     JFrame mainWin = new JFrame("监听Document对象");
    22     JTextArea target = new JTextArea(4, 25);
    23     JTextArea msg = new JTextArea(5, 35);
    24     JLabel label = new JLabel("文本域的修改信息");
    25     Document doc = target.getDocument();// 获得区域内的document对象
    26     LinkedList<UndoableEdit> undoList = new LinkedList<>();
    27     final int UNDO_COUNT = 20;
    28 
    29     public void init() {
    30         msg.setEditable(false);
    31         doc.addDocumentListener(new DocumentListener() {
    32 
    33             @Override
    34             public void removeUpdate(DocumentEvent arg0) {
    35                 int offset = arg0.getOffset();
    36                 int len = arg0.getLength();
    37                 msg.append("插入文本的长度:" + len + "
    ");
    38                 msg.append("插入文本的起始位置:" + offset + "
    ");
    39             }
    40 
    41             @Override
    42             public void insertUpdate(DocumentEvent arg0) {
    43                 int offset = arg0.getOffset();
    44                 int len = arg0.getLength();
    45                 msg.append("插入文本的长度:" + len + "
    ");
    46                 msg.append("插入文本的起始位置:" + offset + "
    ");
    47                 try {
    48                     msg.append("插入文本内容:" + doc.getText(offset, len));
    49                 } catch (BadLocationException evt) {
    50                     evt.printStackTrace();
    51                 }
    52             }
    53 
    54             @Override
    55             public void changedUpdate(DocumentEvent arg0) {
    56                 // TODO Auto-generated method stub
    57 
    58             }
    59         });
    60         doc.addUndoableEditListener(e -> {
    61             UndoableEdit edit = e.getEdit();
    62             if (edit.canUndo() && undoList.size() < UNDO_COUNT) {
    63                 undoList.add(edit);
    64             } else if (edit.canUndo() && undoList.size() >= UNDO_COUNT) {
    65                 undoList.pop();
    66                 undoList.add(edit);
    67             }
    68         });
    69         target.addKeyListener(new KeyAdapter() {
    70             @Override
    71             public void keyTyped(KeyEvent e) {
    72                 if (e.getKeyChar() == 26) {
    73                     if (undoList.size() > 0) {
    74                         undoList.removeLast().undo();
    75                     }
    76                 }
    77             }
    78         });
    79         Box box = new Box(BoxLayout.Y_AXIS);
    80         box.add(new JScrollPane(target));
    81         JPanel panel = new JPanel();
    82         panel.add(label);
    83         box.add(panel);
    84         box.add(new JScrollPane(msg));
    85         mainWin.add(box);
    86         mainWin.pack();
    87         mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    88         mainWin.setVisible(true);
    89     }
    90 
    91     public static void main(String[] args) {
    92         new JavaDemo().init();
    93     }
    94 }
  • 相关阅读:
    Android 生命周期
    struts标签,<s:textfield>嵌套<s:property>的问题
    设置input 内容居中显示 .
    Jquery实现遮罩层,就是弹出DIV周围都灰色不能操作
    如何用Jquery实现 ,比如点击图片之后 ,该图片变成向下的箭头,再点击向下箭头的图片 又变成原始图片呢
    html制作,点击文字超链接显示文本框,再点击文字超链接隐藏文本框
    hibernate mysql视图操作
    Java 日期时间 Date类型,long类型,String类型表现形式的转换
    Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans'(转)
    解决不联网无法启动struts2问题
  • 原文地址:https://www.cnblogs.com/baorantHome/p/7050721.html
Copyright © 2011-2022 走看看