我对一个文本框的内容进行实时监听,当文本框的输入内容超出界,提示越界,一下是代码。
jTextField1.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent evt) {

try {
int temp=Integer.valueOf(jTextField1.getText());
  if(temp<100&&temp>0)//判断条件
{
                 jTextField1.setText(jTextField1.getText());
}
                else
{
                JOptionPane.showMessageDialog(null,"数据越界","提示",JOptionPane.ERROR_MESSAGE);      }
 catch (Exception e) { }
}
});
为什么在输入100以上的三位数时不越界,但是输入四位数是才报越界,我想是程序的控制问题,那位能帮我想一个更好的办法解决,

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【Spirit_demon】截止到2008-06-23 17:42:12的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:35                 
    结贴数:0                  结贴分:0                  
    未结数:2                  未结分:35                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    int temp=Integer.valueOf(jTextField1.getText().length());加一个 .length()试试!
      

  3.   

    加入了length,在输入一开始就会报越界,但是我的要求是0~100不报越界,超出这个范围才报越界
      

  4.   

    int temp=Integer.valueOf(jTextField1.getText().trim()); 
      

  5.   

    为啥两贴一样的?
    http://topic.csdn.net/u/20080623/17/2356433b-d34c-4acc-bd23-5fab18e84d44.html
      

  6.   

    巧了,我今天刚遇上这问题。LZ是将事件放错地方了,你试下这样写: jTextField1.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent evt) {
    } public void keyReleased(KeyEvent evt) {
    try {
    int temp = Integer.valueOf(jTextField1.getText());
    if (temp < 100 && temp > 0) {// 判断条件
    jTextField1.setText(jTextField1.getText());
    } else {
    JOptionPane.showMessageDialog(null, "数据越界", "提示",
    JOptionPane.ERROR_MESSAGE);
    }
    } catch (Exception e) {
    } } public void keyTyped(KeyEvent evt) {
    }
    });我的理解是keyTyped方法实际上是一个pressed和realsed方法的组合,既然是组合,那么系统肯定会截取一个发生时间最早的时候JTextField里的内容,也就是说是pressed时候的快照,那么显然这是你想输入的数据还没有输进去。但如果是选择在realsed方法里面处理的话,这时候数据已经输入,因此系统便可正确判断出来了
      

  7.   

    晕死,在上面的那个帖子发不了回复,在这发
    在JTextField里添加键盘事件来监听JTextField的内容变化并不是很好的方法.
    正确的方法是JTextField.getDocument().addDocumentListener();
    写个类实现DocumentListener接口,如下:  JTextField.getDocument().addDocumentListener(new DocumentListener(){
          public void insertUpdate(DocumentEvent e) {
               //在这里写相应的处理代码
          }
          public void removeUpdate(DocumentEvent e) {
               //如果希望对文本框内容的删除事件做处理
               //在这里写代码
          }
          public void changedUpdate(DocumentEvent e) {
               //一般用不到这个方法
          }
      });
      

  8.   

    恩,果然是这样的,,,多谢你luorigufeng,,也谢谢帮我想解决办法的各位同仁,