我有一个JTextField
的代码示例。当用户没有在某些JTextField
中输入详细信息,然后单击“注册”按钮时,我希望用户被告知他的错误。像这样:
您尚未输入学生中间名
或
您尚未输入学生地址
或
您尚未输入学生中间名和地址
而不是
您尚未输入所有详细信息
我希望信息位于JLabel
。
我还希望将{/ 1}} / s设为红色的{/ 1}} / s为空。
我尝试了很多代码,但没有一个有效。
这是我的代码。我已经使用数组来检查哪些JTextField
/ s是空的,但我不知道如何通知用户它们。
JTextField
答案 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( ... );
}
}
查看创建循环/可重用代码。如果您需要添加另一个文本字段进行测试,它可以使维护更容易。