Reputation: 3
I'm working on a Add new user form and I have to enable the Save button after validating following.
1.User name field must include some letters(either correct or wrong user name).
2.Password field and verify password field must include some letters(either correct or wrong password).
Upvotes: 0
Views: 334
Reputation: 586
Something like this might work for you. The example is not self contained. You need to create the form, the main etc... I'm just focusing on how to handle the check to enable the Save button when the JTextField focus get lost.
1) We add a lost focus event to the text field as follows:
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);
}
}
A better approach might be to add an event listener to the surrounding document inside the JTextField as follows:
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());
}
});
But requires mode code...
Upvotes: 1