Tu peux rendre actif ou inactif le bouton par la méthode JButton.setEnabled(boolean). Comme tu veux le rendre actif lordqu'il y a quelque chose de saisi dans un champ et inactif lorsqu'il n'y en a pas, la valeur booléenne doit dépendre de la présence d'un texte non vide dans le champ :
btnAdd.setEnabled( !textField.getText().isEmpty() );
(ou btnAdd.setEnabled( !textField.getText()trim().isEmpty() ); si en plus tu veux que le bouton soit inactif si on a saisi que des espaces dans le champs.
Comme tu veux que ceci soit effectué dès qu'on saisit dans le champ (ou plutôt dès qu'on change la saisie dans le champ, parce qu'on peut le faire par frappe au clavier mais aussi par copier/coller, ou autre), il faut détecter les chamgements dans le modèle du JTextField. Le modèle d'une JTextField est un Document et on l'obtient par JTextField.getDocument(). Ensuite, on peut écouter les changements dans le modèle du document par un DocumentListener. Quelque soit le changement (ajout, remplacement ou suppression), il faut exécuter le code ci-dessus.
Soit en résumé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| textField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
update();
}
@Override
public void insertUpdate(DocumentEvent e) {
update();
}
@Override
public void changedUpdate(DocumentEvent e) {
update();
}
private void update() {
btnAdd.setEnabled( !textField.getText().isEmpty() );
}
}); |
Partager