2013-05-09 19 views
0

我正在写一个Java程序,我得到了一些文本框和一个按钮。对于输入字符串:“”当填写textfields

即使我在运行程序时填写了所有文本字段,我也会得到一个java.lang.NumberFormatException: For input string: ""

我的代码看起来是这样的:

button.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     method(); 
    } 
} 
      ); 




public void method() { 
    try { 
     String string1 = textfield1.getText(); 
     String string2 = textfield2.getText(); 
     String string3 = textfield3.getText(); 
     if (string1.length() == 0 || string2.length() == 0 || string3.length() == 0) { 
      System.out.println("fill in the required text fields"); 
      return; 
     } 
     int number = Integer.parseInt(textfield3.getText()); 
     //do something 
    } 
    catch (NumberFormatException e) { 
     System.out.println("Wrong format"); 
    } 
} 

编辑:

See more code here

+0

将'textfield3.getText();'分配给'string3'。不妨使用它!另外,调试你的代码。它会告诉你你错在哪里。在看过你提供的代码后,我看不到任何错误。现在是消除一些愚蠢错误的时候了。你确定'textfield3'是正确的字段吗? – christopher 2013-05-09 21:52:44

+0

我的猜测是你的代码看起来像这样,但不完全。而这个错误可能是在“不完全”的部分。张贴重现问题的SSCCE。 – 2013-05-09 21:55:25

+1

尝试使用String#trim().length()。添加一些System.outs来测试文本字段的值,并尝试调试代码 – MadProgrammer 2013-05-09 22:05:34

回答

2

我已经测试你的程序一点点,你有文本字段中的一个问题,因为创建面板并切换哪一个是活动的。

在构造函数中,调用创建JTextField的something()方法。点击按钮后,再次调用某个(),并生成一个新的JTextField,并将其添加到面板中。

因此,您在GUI上有两个JTextField,它们的位置完全相同,但只有一个参考(最后一个创建)。

当你点击将调用method()的按钮。隐藏的TextField被要求提供他的文本(这是它在我的电脑上的工作原理),并且这一直都是空的,因为我只能写入我看到的那个。

一个容易解决此是改变方法的actionPerformed:

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == button1) { 
     present = something; 
     button1.setVisible(false); 
     //something(); 
     visiblePanel(); 
     previous = something; 
    } 

} 

所以我避免的JTextField但visiblePanel的新创建()保证了TextField和第二按钮被示出。

在此更改后,我可以输入“sadda”按下按钮并查看输出“Numberformatexception”。当我输入一个数字时,我看不到任何格式化的东西。

+0

它的工作!非常感谢您的参与。 – Camilla 2013-05-10 00:01:18