Сохранить только если несколько JTextFields не пустые - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть несколько JTextField с и JComboBox в моем JFrame.Поэтому всякий раз, когда я нажимаю кнопку _Add_, он проверяет, являются ли четыре (4) текстовых поля в Панель текущих лекарств пустыми.Если это не так, Выполнить, но это также зависит от того, заполнены ли текстовые поля Личная информация .

Но у меня проблема при использовании оператора if and else, если я используюif and else:

    if(condition if the first textfield is empty) {
        // execute something like the textfield turn to red
    } else if(condition if the second textfield is empty) {
        // execute something like the textfield turn to red
    } else if(condition if the third textfield is empty) {
        // execute something like the textfield turn to red
    } else{
        // execute save information of the patient
    }

В этой ситуации, если 1-е текстовое поле пусто, оно становится красным, но если и 1-е, и 2-е текстовое поле пусто, только 1-е текстовое поле становится красным.

Я также попробовал if, и если и если, но, если было, то следует ставить else всякий раз, когда нет пустого или недействительного ввода, где он будет выполнять и сохранять информацию о пациенте, как это:

   if(condition if the first textfield is empty) {
     // execute something like the textfield turn to red
   }
   if(condition if the second textfield is empty) {
     // execute something like the textfield turn to red
   }
   if(condition if the third textfield is empty) {
     // execute something like the textfield turn to red
   }
   if(condition if the fourth textfield is empty) {
     // execute something like the textfield turn to red
   } else

Если я использую это, только последний оператор if работает только для оператора else.Так что, если последнее утверждение истинно, тогда выполнить, но не тогда выполнить оператор else, который является информацией для сохранения пациента.

Могу ли я что-нибудь сделать с этим?или есть какой-нибудь учебник для меня, чтобы узнать больше о Java и о , если и еще ?

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

Это не должно быть новостью для вас: вы делаете это неправильно.

Есть несколько способов реализовать желаемое решение, вот один из них:

boolean performSave = true;

if (field1 is empty)
{
    do some stuff.
    performSave = false;
}

if (field2 is empty)
{
    do some stuff.
    performSave = false;
}

... repeat for any number of fields.

if (performSave) // no fields are empty.
{
    save stuff.
}
0 голосов
/ 25 декабря 2018

В методе actionPerformed слушателя действия кнопки Добавить вы можете попробовать это:

public void actionPerformed(ActionEvent e) {

    if (! textFieldsValid()) {
        // one or more of the text fields are empty
        // may be display a message in a JOptionPane
        System.out.println("The text fields are not filled with data, etc...");
        return;
    }

    // else, text fields have valid data, so do whatever processing it further...
}

/*
 * This method checks if the text fields are empty and sets their borders as red. Returns
 * a boolean false in case any of the text fields are empty, else true.
 */
private boolean textFieldsValid() {

    boolean validTextFields = true;

    if (textField1.getText().isEmpty()) {
        validTextFields = false;
        textField1.setBorder(new LineBorder(Color.RED));
    }

    if (textField2.getText().isEmpty()) {
        validTextFields = false;
        // textField2.setBorder(...)
    }

    // ... same with textField3 and textField4

    return validTextFields;
}
0 голосов
/ 24 декабря 2018

, но следует поставить еще

Не обязательно следовать if с else.Цель указания else состоит в том, чтобы позволить вашему потоку выполнения кода пройти через все другие случаи, когда if не было выполнено (true).

, если я использую это только последнее выражение if, толькоработает для оператора else

Потому что, if мог бы удовлетворить, поэтому он выполняет else case.Я бы предложил включить return в каждый if случай.Так что, если какой-либо из случаев if был удовлетворен.Тогда он не будет выполнять дальнейший код.

...