即时校验:
给JTextField添加KeyListener监听,当有新的字符输入时,调用一个方法来判断是否为合法(你制定的规则)的字符,如果不合法则去掉本字符,并可以让程序发出警告声。

解决方案 »

  1.   

    自己写个JTextField的子类加入校验,不然的话50个表单够你写的如:
    public class JTextFieldEx
        extends JTextField implements FocusListener, KeyListener{
      
      public JTextFieldEx() {
        setSize(0,0);
        setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        
        addKeyListener(this);
        addFocusListener(this);    setTrimEnable(true); //是否去掉两端空格
        setMaxColumn(10);    //输入字串长度
        setCheckCharCodeType(m_nCheckCharCodeType);  //输入字串的类型
        //...}在相应的事件中实现校验
      

  2.   

    这个是校验类,可以做为一个新类,作为新类比较方便调用,也使程序有更好的结构。
    我这个程序是用来校验输入字符的,只有在a-z才会在JTextField里显示(JtextArea也适用),否则不会显示,并且会有报错音。至于长度啊或者另外的限制,你也可以参考进行。import javax.swing.text.*;
    public class checkinput extends PlainDocument{
       int max;
       public checkinput(int maxlength){
       max=maxlength;
       }
       public void insertString(int offset,String s,AttributeSet a) throws BadLocationException{
       if(s.compareTo("a")<0||s.compareTo("z")>0){
        Toolkit.getDefaultToolkit().beep();
       //  System.out.println(s);
            return;
         }
    //   public void removeUpdate(int offset,String s,AttributeSet a){
    // }
           super.insertString(offset,s,a);
          }
      }
    在需要校验的JTextFiled添加      JTextFieldName.setDocument(new checkinput(5));
      

  3.   

    忘记说了,我开始是要限制长度所以JTextFieldName.setDocument(new checkinput(5));
    里的5就是要限制的长度。 后来不需要了,所以........