提供一个方案供参考:
先用一个字符穿str接受 TextField 里的字符穿
然后每次输入一个字符的时候进行依次判断,
如果不合法,就处理一下str串
把最后那个不合法的字符去掉
然后在把TextField的内容设置为str当然,在这里得考虑到有写字符是没有显示的
呵呵

解决方案 »

  1.   

    e.setKeyChar('\0');
    把这个弄到到你要删除的那个地方。jTFpage= new JTextField(10);
            jTFpage.addKeyListener(new KeyAdapter(){
             public void keyPressed(KeyEvent e){
                int code=e.getKeyCode();
             if (!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9||code==KeyEvent.VK_BACK_SPACE||code==KeyEvent.VK_ENTER)){
               Toolkit.getDefaultToolkit().beep();
                         e.setKeyChar('\0');
               }
             }
             );
      

  2.   

    我有一个class,可以保证输入的是数字。需要的话给个email!!!
      

  3.   

    记得thinking in java中对这个有详细的解释和方案,你不妨看看.
      

  4.   

    给我一份,谢谢!
    [email protected]
      

  5.   

    to zhang21cnboy(事了抚衣去,不留身与名)
      老兄确定你这样有用吗?我试过了没有效果的。
    to  xch28(终于知道怎么改名了!) 
      我看了,那个跟我有点差别了,我想用在这里的。to  xuzhike() 
      能否提供一点点的代码了。[email protected]谢谢了!
      

  6.   

    建议使用javax.swing.JFormattedTextField这个新类。
    它可以实现几乎无限的定义输入格式。主要的使用方法是为JFormattedTextField指定模板,主要有三中模板:显示模板、输入模板、罩框模板。输入模板是在输入的时候限定输入的字符方式;显示模板是把输入模板输入的字符串以规定的格式显示出来;罩框模板是在默认的情况下显示的内容和指定输入的方式。一般情况下,只需要使用一个输入模板即可,其它的模板会让显示模板、罩框模板成为输入模板的复制品。
    比如限制数字:
    NumberFormatter e=new NumberFormatter(NumberFormat.getInstance());
    JFormattedTextField f=new JFormattedTextField(e);即可
      

  7.   

    兄弟,试试这段代码 用JFormattedTextField很容易import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import java.util.*;
    import java.text.*;public class FormattedSample {
    public static void main (String args[]) throws ParseException {
    JFrame f = new JFrame("JFormattedTextField Sample");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container content = f.getContentPane();
    content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
    MaskFormatter mf1 = 
    new MaskFormatter("###-##-####");
    mf1.setPlaceholderCharacter('_');
    JFormattedTextField ftf2 = new 
    JFormattedTextField(mf1);
    content.add(ftf2);
    f.setSize(300, 50);
    f.show();
    }
    }
      

  8.   

    to  duxu2004(渡虚)
    你这个不能用呀,效果一样,请指教
      

  9.   

    老兄试试这个
    JTextField text = new JTextField();
    text.addKeyListener(new TextFieldKeyListener());  class TextFieldKeyListener implements KeyListener{
        public void keyPressed(KeyEvent e){    }
        public void keyReleased(KeyEvent e){    }    public void keyTyped(KeyEvent e){
          Object o = e.getSource();
          if (o instanceof JTextField){
            char keyCh = e.getKeyChar();
            if ((keyCh < '0') || (keyCh > '9')){
              if (keyCh != '') //回车字符
                e.setKeyChar('\0');
            }
          }
        }
      }
      

  10.   

    http://expert.csdn.net/Expert/topic/2835/2835193.xml?temp=.2184107哈哈,果然再这里啊
      

  11.   

    可我不知加上什么,删除键和回车键的 unicode码哪里查?
      

  12.   

    KeyEvent.VK_DELETE
    KeyEvent.VK_ENTER
      

  13.   

    keytype事件中,控制建是不会起作用的。也就是你用我的那个代码,你不用修改,控制建都是能用的。
      

  14.   

    不好意思,没有描述清楚,应该是keyEvent.VK_SPACE_BACK,现在可以了。
    java里已经实现了KeyListener接口的空方法的类KeyAdapter,应该不用自己去实现了吧。
    谢谢了!