2016-08-23 3 views
-3

Я хочу, чтобы пользователь вводил 4 вещи (имя, фамилия, адрес электронной почты и номер телефона), и в случае, если он пропустит один или несколько только одно окно JOptionPane.Несколько текстовых полей с одной joptionpane

String firstname = TF_1.getText(); 
String lastname = TF_2.getText(); 
String email = TF_3.getText(); 
String phonenumber = TF_4.getText(); 


if (TF_1.equals("") || 
    TF_2.equals("") || 
    TF_3.equals("") || 
    TF_4.equals("")) { 

JOptionPane.showMessageDialog(null, "All text fields must be filled"); 
+1

Вы должны, конечно, сравнить текст, а не поле (например, 'firstname.equals (" ")') – Robin

+1

Лично меня раздражают диалоговые окна сообщений. Мне нравится больше, когда кнопка отправки деактивируется до тех пор, пока все текстовые поля не будут заполнены. Но это вопрос вкуса. Интересно, в чем ваш реальный вопрос? – ArcticLord

+0

См. [Tutorial] (https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#stayup): «что, если вы хотите проверить ответ пользователя перед закрытием диалога?» –

ответ

0

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

Во-вторых, проверьте строковые поля firstname, lastname и т. Д., А не на TF_1.

public boolean isEmpty(String... fields) 
    { 
     for (String string : fields) 
     { 
      if (null == string || string.trim().length() == 0) 
      { 
       // return true of filed is blank 
       return true; 
      } 
     } 
     return false; 
    } 

Вы можете использовать этот метод и передать все свои поля, чтобы проверить, не пуст ли он.

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