2013-05-09 1 views
0

Я пишу программу на Java, где у меня есть текстовые поля и кнопка.Для строки ввода: "" при заполнении текстовых полей

Я получаю 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"); 
    } 
} 

EDIT:

See more code here

+0

Вы назначаете 'textfield3.getText();' '' string3'. Могу также использовать его! Кроме того, отлаживайте свой код. Он расскажет вам, где вы ошибаетесь. И, посмотрев код, который вы поставили, я не вижу ничего плохого. Теперь пришло время убрать некоторые глупые ошибки. Вы уверены, что 'textfield3' является правильным полем? – christopher

+0

Я предполагаю, что ваш код выглядит так, но не совсем. И ошибка, вероятно, находится в «не совсем» части. Опубликуйте SSCCE, который воспроизводит проблему. –

+1

Попробуйте использовать строчку # trim(). Length(). Добавьте в некоторые System.outs, чтобы проверить значения текстовых полей и попробовать отладить код – MadProgrammer

ответ

2

Я проверил вашу программу немного и у вас есть проблемы с текстовым полем, потому что создания вашей панели и переключения, какая из них активна.

В конструкторе вы вызываете метод something(), который создает JTextField. Когда кнопка нажата, вы снова вызываете что-то() и генерируете новый JTextField, который вы также добавляете в панель.

Итак, у вас есть два JTextFields в GUI в том же месте, но только ссылка на одну из них (последняя создана).

При нажатии кнопки, вызывающей метод(). Скрытый 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

 Смежные вопросы

  • Нет связанных вопросов^_^