我开发的平台是netbeans,窗体上有一个JTextField组件,我想在JTextField失去焦点时判断JTextField内容是否为空,如果为空的话,弹出一个对话框,告诉用户输入,再让JTextField得到焦点,代码如下:
private void check(java.awt.event.FocusEvent evt) {                      
     
        if(txtName.getText().equals("")){            
            JOptionPane.showMessageDialog(null,"顾客姓名不可为空白","在线超市",JOptionPane.OK_OPTION);
            txtName.requestFocus();
        }
    }  
但是在操作时,弹出对话框之后,按确定,还是会再弹出对话框,一直要弹出几遍,请问这是为什么?我是在JTextField组件的KeyPressed事件中定义一个check()函数来实现这个功能的.

解决方案 »

  1.   

    不好意思,输错了:是在JTextField的focusLost事件当中定义一个Check()函数来实现这个功能的
      

  2.   

    我认为
    JTextField组件用KeyPressed事件来监听代码不正确,是单击事件,用actionPerformed()实践来监听,且面把应该是这样写JOptionPane.showMessageDialog(this,"客姓名不可为空白","在线超市",JOptionPane.OK_OPTION);
      

  3.   

    难道兄弟从来没用过addFocusListener?去看看JDK的帮助吧
      

  4.   

    if (txtName.getText().equals("")) {
    Component newFocusComp = e.getOppositeComponent();
    if (newFocusComp != null) {
    txtName.requestFocus();
    JOptionPane.showMessageDialog(e.getComponent(),
    "顾客姓名不可为空白", "在线超市", JOptionPane.OK_OPTION);
    }
    }
      

  5.   

    我感觉在showMessageDialog加个return就行了吧
      

  6.   

    if(txtName.getText().equals("")){            
                JOptionPane.showMessageDialog(null,"顾客姓名不可为空白","在线超市",JOptionPane.OK_OPTION);
                this.return;
            }