仅在多个JTextField不为空时保存

时间:2018-12-24 16:43:10

标签: java swing if-statement jtextfield

我的JTextField中有多个JComboBoxJFrame。因此,每当我单击_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
    }

在这种情况下,如果第一个文本字段为空,则它将变为红色,但是如果第一和第二个文本字段都为空,则只有第一个文本字段变为红色。

我也尝试了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语句。 因此,如果最后一条语句为true,则执行,而不是{{1}}语句,这是耐心保存的信息。

有什么我可以做的吗?还是有任何教程供我学习有关Java和 if and else 的更多信息?

3 个答案:

答案 0 :(得分:1)

  

但是应该放其他的东西

if之后加上else不是强制性的。指定else的目的是让您的代码执行流能够在if不满足(真)的情况下经历所有其他情况。

  

如果我仅使用此方法,则最后一个if语句仅适用于else   声明

因为if可能已经满意,所以它执行else大小写。我建议在每个return案例中都包含if。因此,如果满足任何if情况。然后,它将不再执行其他代码。

答案 1 :(得分:1)

Add 按钮操作侦听器的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;
}

答案 2 :(得分:0)

这对您来说不是新闻:您做错了。

有几种方法可以实现所需的解决方案, 这是其中之一:

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.
}