我刚刚为我的保存按钮编写了一个actionPerformed,它将数据保存到arraylist中,但是在此之前,我必须确保所有字段都不为空,所以如果文本字段为空,我想显示一个对话框并将所有空文本字段都显示为红色背景颜色
这是我的代码
//Field outside constructor
private List<Component> comp;
//inside constructor
comp = getAllComponents(this);
//method
public static List<Component> getAllComponents(final Container c) {
Component[] comps = c.getComponents();
List<Component> compList = new ArrayList<Component>();
for (Component comp : comps) {
compList.add(comp);
if (comp instanceof Container)
compList.addAll(getAllComponents((Container) comp));
}
return compList;
}
``
//actionperformed
if(e.getSource() == savebtn){
for(Component item:comp){
if(item.isVisible()){
if(item instanceof JTextField){
JTextField txtField = (JTextField)item;
//here is my problem: with no if statement my program works fine and puts all textfields in red but I want to highlight just empty textfields;
if(txtField.getText() == null)
txtField.setBackground(Color.RED);
}
}
}
}
那我该如何解决这个问题呢?非常感谢你
最佳答案
是的Maroun Maroun是正确的,您正在检查String是否为空(对象不存在)。但是您要检查String是否为空。我认为另一个答案可以解决您的问题,但是更干净的解决方案是使用isempty方法。
if(txtField.getText().isEmpty())
txtField.setBackground(Color.RED);
我会在其他答案中添加评论,但我的声誉不够高...