如何检查哪些 JTextField 为空并通知用户?
How to check which JTextFields are empty and inform the user about them?
我有一个包含 JTextField
的代码示例。当用户没有在某些 JTextField
中输入详细信息,然后单击 "Register" 按钮时,我希望用户被告知他的 mistake/s。像这样:
You haven't entered Student Middle Name
或
You have not entered Student Address
或
You haven't entered Student middle name and Address
而不是
You have not entered all the details
我希望信息在 JLabel
.
中
我还希望 is/are 为空的 JTextField
/s 将 its/their background/s 设置为红色。
我试过很多代码,但 none 成功了。
这是我的代码。我已经使用数组来检查哪些 JTextField
/s 是空的,但我不知道如何通知用户它们。
public void checkEmpty() {
String fname = jTextField1.getText();
String mname = jTextField2.getText();
String lname = jTextField3.getText();
String lineone = jTextField4.getText();
String linetwo = jTextField5.getText();
String linethree = jTextField6.getText();
int fnam = fname.length();
int mnam = mname.length();
int lnam = lname.length();
int lineon = lineone.length();
int linetw = linetwo.length();
int linethre = linethree.length();
int[] check = {fnam, mnam, lnam, lineon, linetw, linethre};
for (int i = 0; i < check.length; i++) {
if (check[i] == 0) {
} else {
}
}
}
创建错误消息数组:
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( ... );
}
}
着手创建 loops/reusable 代码。如果您需要添加另一个文本字段进行测试,它会使维护更容易。
这是一个简单的例子。不是遍历输入的长度,而是遍历字段本身。如果一个是空的,则将其涂成红色并将其相应的消息附加到消息列表中。然后在标签上显示该列表。
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());
}
}
我有一个包含 JTextField
的代码示例。当用户没有在某些 JTextField
中输入详细信息,然后单击 "Register" 按钮时,我希望用户被告知他的 mistake/s。像这样:
You haven't entered Student Middle Name
或
You have not entered Student Address
或
You haven't entered Student middle name and Address
而不是
You have not entered all the details
我希望信息在 JLabel
.
我还希望 is/are 为空的 JTextField
/s 将 its/their background/s 设置为红色。
我试过很多代码,但 none 成功了。
这是我的代码。我已经使用数组来检查哪些 JTextField
/s 是空的,但我不知道如何通知用户它们。
public void checkEmpty() {
String fname = jTextField1.getText();
String mname = jTextField2.getText();
String lname = jTextField3.getText();
String lineone = jTextField4.getText();
String linetwo = jTextField5.getText();
String linethree = jTextField6.getText();
int fnam = fname.length();
int mnam = mname.length();
int lnam = lname.length();
int lineon = lineone.length();
int linetw = linetwo.length();
int linethre = linethree.length();
int[] check = {fnam, mnam, lnam, lineon, linetw, linethre};
for (int i = 0; i < check.length; i++) {
if (check[i] == 0) {
} else {
}
}
}
创建错误消息数组:
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( ... );
}
}
着手创建 loops/reusable 代码。如果您需要添加另一个文本字段进行测试,它会使维护更容易。
这是一个简单的例子。不是遍历输入的长度,而是遍历字段本身。如果一个是空的,则将其涂成红色并将其相应的消息附加到消息列表中。然后在标签上显示该列表。
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());
}
}