【问题标题】:Alert Message When TextField is empty (javafx)TextField 为空时的警报消息 (javafx)
【发布时间】:2018-11-13 05:17:58
【问题描述】:

我希望我的代码检查表单中的文本字段是否为空,然后显示弹出警报消息。我的问题是,即使文本字段已填写,只要我点击“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();

【问题讨论】:

  • | 怎么了?也许||?
  • 我不知道,但| 似乎是bitwise or。
  • 您也可以采取this 的方法或从中获取想法。
  • 我个人认为| 和|| 不会影响整体结果。 | 和 || 的区别在于 || 是一个短路运算符 - 即使您链接其中的 1000 个,整个表达式将返回 true,只要它找到第一个计算的子表达式到true。 | 将简单地评估所有。

标签: javafx


【解决方案1】:

我相信部分问题可能是使用单管道 | 代替标准的 ||。

但是,您可以采用另一种方法,它可能更容易阅读。这就是我在应用程序中处理验证的方式:

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() 回复为真,您就知道您拥有所需的所有信息。

【讨论】:

    【解决方案2】:

    您也可以在没有 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());
       }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 2012-10-29
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多