Оповещение, когда TextField пусто (javafx) - PullRequest
0 голосов
/ 04 июня 2018

Я хотел бы, чтобы мой код проверил, являются ли текстовые поля в моей форме пустыми, а затем отобразил всплывающее предупреждающее сообщение.Моя проблема в том, что даже если текстовые поля заполнены, это предупреждающее сообщение всплывает, как только я в любом случае нажимаю «ENTER».Любая помощь приветствуется!

  BtnEnter.setOnAction((ActionEvent e) -> {


        if  (txtfName.getText().isEmpty() | txtlName.getText().isEmpty() | 
                txtMI.getText().isEmpty() | txtStreeAdd.getText().isEmpty()
                | txtCity.getText().isEmpty() | txtZip.getText().isEmpty()
                | txtPhone.getText().isEmpty() | txtEmail.getText().isEmpty()
                | txtSecEmail.getText().isEmpty()) {



            Alert alert = new Alert(Alert.AlertType.WARNING);
            alert.setTitle("Warning");
            alert.setHeaderText("Required Fields Empty");
            alert.setContentText("The fields highlighted in red must be filled "
                    + "out.\nPlease try again.");
            alert.showAndWait();

Ответы [ 2 ]

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

Вы также можете подойти к нему по-другому без Alert alert = new Alert (Alert.AlertType.WARNING);Вот фрагмент кода:

public boolean validateForm() {

    StringBuilder errors = new StringBuilder();

    // Confirm mandatory fields are filled out
    if (jTextField1.getText().trim().isEmpty()) {
        errors.append("- Please enter a first name.\n");
        jTextField1.requestFocusInWindow();
        JOptionPane.showMessageDialog(null, errors, "Warning!", JOptionPane.ERROR_MESSAGE);
        return false;
    }
     if (jTextField2.getText().trim().isEmpty()) {
        errors.append("- Please enter a last name.\n");
        jTextField2.requestFocusInWindow();
        JOptionPane.showMessageDialog(null, errors, "Warning!", JOptionPane.ERROR_MESSAGE);
        return false;
    }
     String s = ((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText();
   if (s.equals("")) {
    errors.append("- Please choose a date.\n");
    jDateChooser1.requestFocusInWindow();
JOptionPane.showMessageDialog(null, errors, "Warning!", JOptionPane.ERROR_MESSAGE);
return false;

}

   if (jTextField3.getText().trim().isEmpty()) {
        errors.append("- Please enter the age.\n");
        jTextField3.requestFocusInWindow();
        JOptionPane.showMessageDialog(null, errors, "Warning!", JOptionPane.ERROR_MESSAGE);
        return false;
    }




return true;    

}

Таким образом, вы можете проверить, знают ли пользователи, что именно отсутствует, и показать импредупреждающее сообщениеДобавьте слушателя для кнопки.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   if(validateForm()) {
      System.out.println("First name: "+jTextField1.getText());
      System.out.println("Last name: "+jTextField2.getText());
      System.out.println("Date: "+jDateChooser1.getDate());
       System.out.println("Age: "+jTextField3.getText());
   }
} 
0 голосов
/ 04 июня 2018

Я полагаю, что частью проблемы может быть использование единственного канала | для ИЛИ вместо стандартного ||.

Однако есть другой подход, который вы могли бы использовать, который может быть немного легче читать,Вот как я обрабатываю проверку в своих приложениях:

public boolean validate() {

        StringBuilder errors = new StringBuilder();

        // Confirm mandatory fields are filled out
        if (txtfName.getText().trim().isEmpty()) {
            errors.append("- Please enter a first name.\n");
        }
        if (txtlName.getText().trim().isEmpty()) {
            errors.append("- Please enter a last name.\n");
        }
        if (txtMI.getText().trim().isEmpty()) {
            errors.append("- Please enter a middle initial.\n");
        }
        if (txtStreetAdd.getText().trim().isEmpty()) {
            errors.append("- Please enter a street address.\n");
        }
        if (txtCity.getText().trim().isEmpty()) {
            errors.append("- Please enter a city.\n");
        }
        if (txtZip.getText().trim().isEmpty()) {
            errors.append("- Please enter a ZIP code.\n");
        }
        if (txtPhone.getText().trim().isEmpty()) {
            errors.append("- Please enter a phone number.\n");
        }
        if (txtEmail.getText().trim().isEmpty()) {
            errors.append("- Please enter a primary email address.\n");
        }
        if (txtSecEmail.getText().trim().isEmpty()) {
            errors.append("- Please enter a secondary email address.\n");
        }

        // If any missing information is found, show the error messages and return false
        if (errors.length() > 0) {
            Alert alert = new Alert(Alert.AlertType.WARNING);
            alert.setTitle("Warning");
            alert.setHeaderText("Required Fields Empty");
            alert.setContentText(errors.toString());

            alert.showAndWait();
            return false;
        }

        // No errors
        return true;
    }

Это дает дополнительное преимущество, позволяя пользователю точно знать, какая информация также отсутствует.При этом вы просто вызываете метод validate(), когда пользователь нажимает кнопку действия.Если validate() вернется, вы знаете, что у вас есть вся необходимая информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...