FormattedDocument.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:2k
源码类别:

Telnet客户端

开发平台:

Java

  1. package org.tn5250j.tools;
  2. import javax.swing.text.*;
  3. import java.awt.Toolkit;
  4. import java.text.*;
  5. public class FormattedDocument extends PlainDocument {
  6.     private Format format;
  7.     public FormattedDocument(Format f) {
  8.         format = f;
  9.     }
  10.     public Format getFormat() {
  11.         return format;
  12.     }
  13.     public void insertString(int offs, String str, AttributeSet a)
  14.         throws BadLocationException {
  15.         String currentText = getText(0, getLength());
  16.         String beforeOffset = currentText.substring(0, offs);
  17.         String afterOffset = currentText.substring(offs, currentText.length());
  18.         String proposedResult = beforeOffset + str + afterOffset;
  19.         try {
  20.                format.parseObject(proposedResult);
  21.                super.insertString(offs, str, a);
  22.         } catch (ParseException e) {
  23.             Toolkit.getDefaultToolkit().beep();
  24.             System.err.println("insertString: could not parse: "
  25.                                + proposedResult);
  26.         }
  27.     }
  28.     public void remove(int offs, int len) throws BadLocationException {
  29.         String currentText = getText(0, getLength());
  30.         String beforeOffset = currentText.substring(0, offs);
  31.         String afterOffset = currentText.substring(len + offs,
  32.                                                    currentText.length());
  33.         String proposedResult = beforeOffset + afterOffset;
  34.         try {
  35.             if (proposedResult.length() != 0)
  36.                 format.parseObject(proposedResult);
  37.             super.remove(offs, len);
  38.         } catch (ParseException e) {
  39.             Toolkit.getDefaultToolkit().beep();
  40.             System.err.println("remove: could not parse: " + proposedResult);
  41.         }
  42.     }
  43. }