使用DocumentListener Java根据文本字段输入禁用或启用按钮

时间:2020-11-01 16:37:53

标签: java swing

我的用户界面中大约有10个jtextfield和一个按钮。我想在界面初始化时禁用该按钮,并在所有文本字段都不为空时启用它。我尝试在线搜索该问题,但有人说无法完成。我的文本框和按钮没有经过硬编码,但是可以通过拖放操作完成。真的没有解决方案可以在 拖放jTextfield 上实现DocumentListener吗?

public class Register extends javax.swing.JFrame implements DocumentListener{
private List<JTextField> textfields = new ArrayList<JTextField>();


public void addTextField(){
    textfields.add(TextField1);
    textfields.add(TextField2);
    textfields.add(TextField3);
    textfields.add(TextField4);
    textfields.add(TextField5);
    textfields.add(TextField6);
    textfields.add(TextField7);
    textfields.add(TextField8);
    textfields.add(TextField9);
    textfields.add(TextField10);
    for(int i =0;i<textfields.size ();i++){
    textfields.get(i).getDocument().addDocumentListener(this);
}
    
}
public boolean isDataEntered()
{
    for (JTextField textField : textfields)
    {
        if (textField.getText().trim().length() == 0)
            return false;
    }

    return true;
}

@Override
public void insertUpdate(DocumentEvent de) {
   checkData();
}

@Override
public void removeUpdate(DocumentEvent de) {
    checkData();
}

@Override
public void changedUpdate(DocumentEvent de) {
    checkData();
}
private void checkData(){
    jButton2.setEnabled(isDataEntered());
}

private javax.swing.JTextField TextField1;
private javax.swing.JTextField TextField10;
private javax.swing.JTextField TextField2;
private javax.swing.JTextField TextField3;
private javax.swing.JTextField TextField4;
private javax.swing.JTextField TextField5;
private javax.swing.JTextField TextField6;
private javax.swing.JTextField TextField7;
private javax.swing.JTextField TextField8;
private javax.swing.JTextField TextField9;
private javax.swing.JButton jButton2;

0 个答案:

没有答案