求一表格单元格编辑器(密码框编辑,密码框渲染,取值范围[001,998])。闭区间,取值不能为000和999。显示图形为***  编辑渲染时均为***。表格单元格不能够输入000和999。即输入00后,第三个0输入不进去,但是可以输入1。小弟最近心乱如麻,苦苦寻思许久不得其解,希望大家帮忙,谢谢。

解决方案 »

  1.   


    public class PassField extends JPasswordField{
        
        private int max_length = 3;
           
        public PassField() {
    setDocument(new NumberDocument());
    this.setSize(this.getHeight(),80);
        }
            
        class NumberDocument extends PlainDocument {
    public void insertString(int offset, String s, AttributeSet a) throws BadLocationException {
        try {
    Integer.valueOf(s);
        } catch (NumberFormatException ex) {
    return;
        }
        String ns = s+String.valueOf(getPassword());
        if(ns.equals("000")||ns.equals("999"))
    return ;
        if(getPassword().length+s.getBytes().length > max_length)
    return;
        super.insertString(offset,s,a);
    }
        }
    }