在JTextFields(Java)中验证用户输入

时间:2014-04-20 19:30:08

标签: java swing validation jtextfield

我正在尝试将用户输入验证到文本框中。我正在检查文本框是否已填充,如果不是,我需要提醒用户未填充哪个文本框。我的问题是我需要一种方法来返回哪个文本框/变量为空。我知道我需要传递2个值,一个是文本框的内容,另一个是文本框的标识符。

目前我有这个(在StackOverflow上找到),它会检查数组中的每个变量是否都已填充。

public boolean areAllNotEmpty(String... text){

    for(String s : text) {
        if(s == null || "".equals(s)) {

            return false;
        }
    }
    return true;
}

我希望它也能返回这样的东西(评论):

public boolean areAllNotEmpty(String... text){

    for(String s : text) {
        if(s == null || "".equals(s)) {
           // return textbox name / value OR show alert box with "Forename missing" etc  
            return false;
        }
    }
    return true;
}

我之前在C#项目上实现了这个方法但它需要一次传入一个文本框,并且我猜多个方法调用并不好。

public static bool IsFieldNull(TextBox currentText, string type)
    {
        bool allOk = false;

        if (currentText.Text == "")
        {
            MessageBox.Show("Error - '" + type + "' field cannot be left blank, please enter some data in this field");
            currentText.Focus();
            return allOk;
        }

        else
        {
            allOk = true;
            return allOk;
        }

这是在C#中调用的方式。

Validation.IsFieldNull(txtBoxFixtureDate, "Fixture Date") && Validation.IsFieldNull(txtBoxTime, "Time")

如果其中任何一项没有意义,请告诉我。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以将组件传递给方法并返回空的,如下所示:

public List<JTextField> getEmptyFields(JTextField... textFields) {
    List<JTextField> emptyFields = new ArrayList<JTextField>();
    for (JTextField field : textFields) {
        if (field.getText().isEmpty()) {
            emptyFields.add(field);
        }
    }

    return emptyFields;
}

然后你可以检查返回列表的size()以确定是否有空字段并相应地处理它们。

答案 1 :(得分:0)

在按下提交按钮时验证不是很有用,验证错误发生的时间会更好。您可以考虑使用InputVerifier。然后你知道它何时处于有效状态。除此之外,如果您使用java7或更高版本,您可以查看JLayer来装饰不是有效状态的组件。有关更多示例,请参阅此处Decorate components with JLayer