如何检查哪些JTextField为空并告知用户有关它们的信息?

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

您尚未输入学生中间名

要么

您尚未输入学生地址

要么

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

而不是

您尚未输入所有详细信息

我希望信息在JLabel

我还希望将/它们的背景/设置为红色的JTextField / s为空。

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

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

 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 { } } } 

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

 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(""); for (JTextField field : fields) { if (field.getText().isEmpty()){ field.setBackground(Color.RED); sb.append("

").append("You haven't entered " + field.getName()); } } JLabel label = new JLabel(sb.toString()); } }

创建一个错误消息数组:

 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( ... ); } } 

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