添加一个DocumentListener在里面进行判断就可以了

解决方案 »

  1.   

    这个问题已经有人问了无数遍了
    你只要搜一下答案就有一海片...
    BTW: DocumentListener 是不管用的
    import javax.swing.*;
    import javax.swing.text.AbstractDocument;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DocumentFilter;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    public class DocSizeFilter extends JFrame {
        public static final int MAX_SIZE = 16;
        private JTextField jtf;    public DocSizeFilter() {
            AbstractDocument aDoc;        jtf = new JTextField();
            aDoc = (AbstractDocument) jtf.getDocument();
            aDoc.setDocumentFilter(new SizeFilter(MAX_SIZE));
            getContentPane().add(jtf);
        }    public static void main(String[] args) {
            DocSizeFilter frame = new DocSizeFilter();
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }    private class SizeFilter extends DocumentFilter {
            int maxSize;
            int size;
            Pattern p = Pattern.compile("[0-9A-Za-z]");
            Matcher m = p.matcher("");        public SizeFilter(int maxSize) {
                this.maxSize = maxSize;
            }        public void insertString(FilterBypass fb, int offset, String string,
                                     AttributeSet attr) throws BadLocationException {
                size = fb.getDocument().getLength() + string.length();
                m.reset(string);
                if (size < maxSize && m.matches()) {
                    super.insertString(fb, offset, string, attr);
                }
            }        public void replace(DocumentFilter.FilterBypass fb, int offset,
                                int length,String text, AttributeSet attrs)
                    throws BadLocationException {
                size = fb.getDocument().getLength() + text.length();
                m.reset(text);
                if (size < maxSize && m.matches()) {
                    super.insertString(fb, offset, text, attrs);
                }
            }
        }
    }需要自己实现一个 DocumentFilter, 实现过程见例题
      

  2.   

    http://community.csdn.net/Expert/topic/3335/3335175.xml?temp=7.658023E-02
    我在这个帖子上做过2次回复,正好能满足你的需要,请参照。