我正在处理添加新用户表单,我必须在验证以下内容后启用“保存”按钮。
1.用户名字段必须包含一些字母(正确或错误的用户名)。
2.密码字段和验证密码字段必须包含一些字母(正确或错误的密码)。
最佳答案
这样的东西可能对你有用。该示例不是独立的。您需要创建表单、主文件等...我只是关注如何在 JTextField 焦点丢失时处理检查以启用“保存”按钮。
1)我们向文本字段添加失去焦点事件,如下所示:
private JTextField getTxtUser() {
if (txtUser == null) {
txtUser = new JTextField();
txtUser.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusLost(java.awt.event.FocusEvent e) {
getBtnSave().setEnabled(
!getTxtUser().getText().isEmpty() &&
!getTxtPass().getText().isEmpty());
}
});
}
return txtUser;
}
private JTextField getTxtPass() {
if (txtPass == null) {
txtPass = new JTextField();
txtPass.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusLost(java.awt.event.FocusEvent e) {
getBtnSave().setEnabled(
!getTxtUser().getText().isEmpty() &&
!getTxtPass().getText().isEmpty());
}
});
}
return txtPass;
}
private JButton getBtnSave() {
if (btnSave == null) {
btnSave = new JButton("Save");
btnSave.setEnabled(false);
}
}
更好的方法可能是将事件监听器添加到 JTextField 内的周围文档,如下所示:
txtUser.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
getBtnSave().setEnabled(
!getTxtUser().getText().isEmpty() &&
!getTxtPass().getText().isEmpty());
}
@Override
public void insertUpdate(DocumentEvent e) {
getBtnSave().setEnabled(
!getTxtUser().getText().isEmpty() &&
!getTxtPass().getText().isEmpty());
}
@Override
public void changedUpdate(DocumentEvent e) {
getBtnSave().setEnabled(
!getTxtUser().getText().isEmpty() &&
!getTxtPass().getText().isEmpty());
}
});
但需要模式代码...
关于Java-JTextField 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509465/