LimitedDocument extends PlainDocument
重载insertString()方法,加上int len = getLength();
if( len >= nLineLimit ) {
    Toolkit.getDefaultToolkit().beep();
    return;
}
其他部分可以不变。JTextField.setDocument(new LimitedDocument);

解决方案 »

  1.   

    这是我以前写的,,,,不但可以限制长度还可以限制字符自定义个类:import javax.swing.text.AbstractDocument;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;public class LimitedDocument extends PlainDocument {    private int _maxLength  = -1;    private String _allowCharAsString = null;
        public LimitedDocument(){
            super();
        }    public LimitedDocument( int maxLength ){
            super();
            this._maxLength = maxLength;
        }    public void insertString( int offset, String str, AttributeSet attrSet)
        throws BadLocationException{        if(str == null) {
                return;
            }        if(_allowCharAsString != null && str.length() == 1) {
                if(_allowCharAsString.indexOf(str) == -1){
                    return;
                }
            }        char[] charVal = str.toCharArray();
            String strOldValue = getText(0, getLength());
            byte[] tmp = strOldValue.getBytes();        if(_maxLength != -1 && (tmp.length + charVal.length > _maxLength)){
                return;
            }        super.insertString(offset, str, attrSet);
        }    public void setAllowChar(String str) {
            _allowCharAsString = str;
        }
    }使用时: LimitedDocument ld = new LimitedDocument(8);//参数为能输入的最大长度
     ld.setAllowChar("0123456789");//只能输入的字符 jTextField.setDocument(ld);//运用到文本框中
      

  2.   

    yuanmeng163(今天我有空) 你判断字符长度超出的方法好像没 jiaojian77(长夜漫漫)的好并且我有个地方不懂:
    ch和by长度为什么会一样?
    byte是8位的,char是16位的,为什么下面输出都是4呢? String st = "alin";
    char[] ch = st.toCharArray();
    byte[] by = st.getBytes();
    //ch和by长度为什么会一样?
    System.out.println("" + ch.length);
    System.out.println("" + by.length);
      

  3.   

    很可惜地说用肯定 jiaojian77(长夜漫漫) 好用
    但它好象没有真的做了啥处理 yuanmeng163(今天我有空) 
    我喜欢
      

  4.   

    监听JTextField的keypress事件也是可以的吧?在输入不为空的时候,判断字符穿的长度,如果超过您指定的范围,就弹出错误提示
      

  5.   

    yuanmeng163(今天我有空)比我说的更详细,我只是说了个思路。