2013-05-09 39 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

相關問題