为JTextField增加一个键盘事件,增加键盘事件的方法是addKeyListener

解决方案 »

  1.   

    每次有按键,就激发事件,然后getText把里面的字符串提出来,看看字符串的length有没有超过你预设的值。
      

  2.   

    楼主,何必捕捉那个事件?下面的类可以设置输入字符的个数,如果字符数达到最大限制,就会beep,停止输入!!(你可以将JTextField显示的长度设置为maxLen)import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;public class test extends JTextField
    {
    private numDoc doc = null; public test() {
    super(12);
            setDocument( doc = new numDoc());
    }     public test(int maxLen)
        {
            super( maxLen );//调用这个构造函数即可
            setDocument( doc = new numDoc(maxLen) );
        }
        
    public void setMaxLen( int maxLen ) {
    doc.setMaxLen( maxLen );
    } public int getMaxLen() {
    return doc.getMaxLen();
    } public static void main( String args[] ) {
    JFrame f = new JFrame("Only input number characters" );
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    Container c = f.getContentPane();
    test test1;
    c.add( test1 = new test(),BorderLayout.NORTH );
    c.add( new test( 10 ),BorderLayout.CENTER );
    test1.setMaxLen( 20 );
    f.pack();
    f.show();
    }
    }class numDoc extends PlainDocument
    {
    int maxLength=16; public numDoc(int maxLen)
    {
    maxLength=maxLen;
    }

    public numDoc(){} public void setMaxLen( int maxLength ) {
    this.maxLength = maxLength;
    } public int getMaxLen() {
    return maxLength;
    } public void insertString(int offset,String s,AttributeSet a)throws BadLocationException 
    {
    int len = getLength();
    String str = getText( 0,len );
    if ( (str+s).length() > maxLength )
    {
    Toolkit.getDefaultToolkit().beep();
    return;
    }
    super.insertString(offset,s,a);
    }
    }