注意是 JTextFieldJTextField 没有 下面的方法Document doc = new PlainDocument()
JTextArea text = new JTextArea(doc);  

解决方案 »

  1.   

    你可以增加key的事件,具体叫什么我不清楚了,你查查API。然后判断当前按键输入的是什么,然后按照你的需求处理
      

  2.   

    监听事件是不靠谱的,按下去后确实可以删除,但是那个输入的字符要先显示到文本框里,然后被自动删除,体验相当不好
    PlainDocument是可以的,假如是只输入数字:
    import javax.swing.text.AttributeSet;   
    import javax.swing.text.BadLocationException;   
    import javax.swing.text.PlainDocument; public class NumOnly extends PlainDocument{
    public void insertString(int offs,String str,AttributeSet a) throws BadLocationException{   
    for(int i=0;i<str.length();i++){  
    if(str.charAt(i)<'0'||str.charAt(i)>'9'){   
    return;   

    }   
    super.insertString(offs,str,a);  

    }
    }  
    jTextField.setDocument(new NumOnly());
      

  3.   

    谢谢。但事情是这样的。我做了个计算器的程序。不是windows系统那样的计算器,是可以直接算出在JTextField输入的四则混合运算算式的计算器我同时也添加了相应的 计算器按钮,什么0-9数字 各种符号,等号,左右括号等
    这样,我需要实现这样的功能:在JTextField里每按一下键盘都进行判断,如果是非法字符则什么也不提示,但不允许输入的非法字符进入JTextField。如果是合法字符,则输入(但我需要不是直接往里输入,而是调用相应按钮的doclick事件,模拟点击按钮往里输入,这样就有按钮被点击的效果了,目前已经在我程序中实现了)
    特殊的,如果按键盘上的C,不要往JTextField输入C,而是执行计算器的清空事件。
    还请楼上以及各位高手指点,谢谢
      

  4.   

    同楼主,最近在搞个android可自由输入的计算器,不过我的处理方式相对简化,没法计算的直接报错好了