我正在尝试将用户输入验证到文本框中。我正在检查文本框是否已填充,如果不是,我需要提醒用户未填充哪个文本框。我的问题是我需要一种方法来返回哪个文本框/变量为空。我知道我需要传递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")
如果其中任何一项没有意义,请告诉我。
感谢您的帮助。
答案 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。