如何检查哪些JTextField为空并告知用户它们?

时间:2016-10-30 11:00:45

标签: java swing jtextfield

我有一个JTextField的代码示例。当用户没有在某些JTextField中输入详细信息,然后单击“注册”按钮时,我希望用户被告知他的错误。像这样:

  

您尚未输入学生中间名

  

您尚未输入学生地址

  

您尚未输入学生中间名和地址

而不是

  

您尚未输入所有详细信息

我希望信息位于JLabel

我还希望将{/ 1}} / s设为红色的{/ 1}} / s为空。

我尝试了很多代码,但没有一个有效。

这是我的代码。我已经使用数组来检查哪些JTextField / s是空的,但我不知道如何通知用户它们。

JTextField

2 个答案:

答案 0 :(得分:2)

这是一个简单的例子。而不是迭代输入的长度,迭代字段本身。如果一个为空,则将其绘制为红色并将其相应的消息附加到消息列表中。然后在标签上显示该列表。

public class Main {

    public static void main(String[] args) {

        JTextField fName = new JTextField();
        fName.setName("First Name");
        JTextField lName = new JTextField();
        lName.setName("last Name");
        JTextField address = new JTextField();
        address.setName("Address");

        JTextField[] fields = new JTextField[] {fName, lName, address};

        StringBuilder sb = new StringBuilder("<html>");
        for (JTextField field : fields) {
            if (field.getText().isEmpty()){
                field.setBackground(Color.RED);
                sb.append("<p>").append("You haven't entered " + field.getName());
            }
        }

        JLabel label = new JLabel(sb.toString());
    }
}

答案 1 :(得分:1)

创建一个错误消息数组:

String[] errors = 
{
    "First Name is missing",
    "Middle Name is missing",
    ...
};

然后在循环代码中,您只需引用数组以获取相应的消息。您可能想要使用JTextArea,因为您可能有多条消息:

if (check[i] == 0) 
{
    textArea.append( errors[i] );
}

您甚至可以通过创建一个文本字段数组来简化代码,然后您的循环代码将类似于:

for (int i = 0; i < textFields.length; i++) 
{
    JTextField textField = textFields[i];
    String text = textField.getText();
    int length = text.length();

    if (length == 0) 
    {
        textArea.append( ... );
    }
}

查看创建循环/可重用代码。如果您需要添加另一个文本字段进行测试,它可以使维护更容易。