JTextField有没有什么方法可以限制最大的输入字符数?
JTextField构造函数可以帮你 
我是想在每输入一个字符时,检查一个JTextField对象中共有多少字符?
JTextField.length

解决方案 »

  1.   

    给你写一个简单的import javax.swing.JTextField;
    import javax.swing.event.DocumentEvent;
    import javax.swing.event.DocumentListener;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;public class MaxLengthTextField extends JTextField implements DocumentListener {    public MaxLengthTextField() {
            this( -1);
        }    public MaxLengthTextField(int maxLength) {
            setDocument(new MaxLengthDocument(maxLength));
            getDocument().addDocumentListener(this);
        }    class MaxLengthDocument extends PlainDocument{        private int fMaxLength = -1; // Less than 0 means no length limit.        public MaxLengthDocument() {
                this( -1);
            }        public MaxLengthDocument(int maxLength) {
                fMaxLength = maxLength;
            }        public void insertString(int offs, String str, AttributeSet attr) throws
                    BadLocationException {
                int origLength = getLength();
                char[] input = str.toCharArray();
                int length = 0;
                for (int i = 0; i < input.length; i++) {
                    if ((fMaxLength >= 0) && (origLength + length >= fMaxLength)) {
                        break;
                    }
                    length++;
                }            super.insertString(offs, new String(input, 0, length), attr);
            }
        }
        public void insertUpdate(DocumentEvent e) {
            System.out.println(getText().length());
        }    public void removeUpdate(DocumentEvent e) {
            System.out.println(getText().length());
        }    public void changedUpdate(DocumentEvent e) {    }
    }