我怎样才能重置JTextField .......?

时间:2013-08-13 06:07:40

标签: java swing jframe jtextfield

我使用下面的pgm来保存地址簿上的详细信息。我想检查一下是否是int的暴徒。它将在第一次正确执行(如果我在mob字段中输入字母,它将无法保存)。但即使我在暴徒提交的一封信中输入了第二次的话,它也会保存。 mob将存储以前的值。如何在第一次执行后清除暴徒.....

 public void savePerson() {  
    name   =   jtfName.getText();
    name   =   name.toUpperCase();  
    jtfName.setText(name);
    address = jtfAddress.getText();

    try {
        landline = Integer.parseInt(""+jtfLandline.getText());
    } catch(Exception e) {          
    }

    try {           
       mob = Integer.parseInt(""+jtfmob.getText());     
    }catch(Exception e) {
    }

    email   = jtfEmail.getText();
   if(name.equals("")) {
        JOptionPane.showMessageDialog(null, "Please enter person name.");           
   } else if(mob == 0) {
        JOptionPane.showMessageDialog(null, "Please enter Mobile Number.");
   } else {
          //create a PersonInfo object and pass it to PersonDAO to save it
          PersonInfo person = new PersonInfo(name, address, landline, mob , email);
          pDAO.savePerson(person);
          JOptionPane.showMessageDialog(null, "Person Saved");            
          clear();         
   }
 }

4 个答案:

答案 0 :(得分:2)

在执行下一次使用方法jtfmob.setText("")之前,请编写完整的逻辑。

答案 1 :(得分:2)

试试这个,

第一次迭代结束后,通过设置如下

重置文本字段
jtfmob.setText("");

要单独获取数字输入,请尝试以下代码

jtfmob = new JFormattedTextField(NumberFormat.getInstance());

答案 2 :(得分:1)

这是非常明显的情况。 当您第一次解析jtfmob文本字段时,它将查找其中的值。如果该值不是整数,则根本不会对其进行解析,您将获得空值。但如果该值为整数,则可以毫无问题地进行。

mob = Integer.parseInt(""+jtfmob.getText());

mob将包含整数数据类型中的已解析值。但是下次当你把字母放在文本字段中时,它不会被解析,从而导致异常(你正在成功捕获)。程序的控制将被转移到catch块而不更新Integer类型变量 mob的值即可。所以 mob 将包含OLD值(因为异常不会更新值),并且在这种情况下也是如此。

要解决此问题,请在catch块中显示一些消息以输入正确的值或自行寻找其他方法

答案 3 :(得分:0)

在构造函数中使用以下内容。

jTextField1.setText("");

每次单击按钮之前,它都会重置您的值。