Maison >Java >javaDidacticiel >Comment détecter immédiatement les changements de valeur de JTextField sans appuyer sur Entrée ?

Comment détecter immédiatement les changements de valeur de JTextField sans appuyer sur Entrée ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 08:07:17736parcourir

How to Detect JTextField Value Changes Immediately Without Pressing Enter?

Écouteur de changement de valeur pour JTextField

De nombreux développeurs ont rencontré le problème d'un écouteur d'action ne se déclenchant qu'après que l'utilisateur appuie sur Entrée dans un champ de texte . Pour remédier à ce problème, nous devons utiliser une approche différente, capable de détecter immédiatement les changements de valeur.

La solution réside dans l'utilisation d'un "DocumentListener" au lieu d'un "ActionListener". Le document sous-jacent du champ de texte écoute automatiquement toute modification de son contenu. En ajoutant un écouteur à ce document, nous pouvons exécuter des actions spécifiques dès que l'utilisateur modifie le texte.

Voici un extrait de code modifié qui intègre un "DocumentListener" :

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    warn();
  }
  public void removeUpdate(DocumentEvent e) {
    warn();
  }
  public void insertUpdate(DocumentEvent e) {
    warn();
  }

  public void warn() {
     if (Integer.parseInt(textField.getText())<=0){
       JOptionPane.showMessageDialog(null,
          "Error: Please enter number bigger than 0", "Error Message",
          JOptionPane.ERROR_MESSAGE);
     }
  }
});

Ceci Le code déclenchera le message d'erreur dès que la saisie dans le champ de texte ne répond plus à la condition (un entier positif). Pas besoin d'appuyer sur Entrée ou d'effectuer des actions supplémentaires.

Ainsi, au lieu de compter sur "ActionListener", qui écoute les "ActionEvents" comme en appuyant sur Entrée, nous exploitons un "DocumentListener" qui observe les changements dans le document. , permettant des réactions immédiates aux modifications de texte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn