我刚刚为我的保存按钮编写了一个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);


我会在其他答案中添加评论,但我的声誉不够高...

10-05 23:17