Maison >Java >javaDidacticiel >Pourquoi mon JFormattedTextField ré-affiche-t-il une entrée valide après une entrée invalide ?

Pourquoi mon JFormattedTextField ré-affiche-t-il une entrée valide après une entrée invalide ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-02 06:27:13810parcourir

Why Does My JFormattedTextField Re-display Valid Input After an Invalid Entry?

Problème JFormattedTextField : le texte réapparaît après une entrée invalide

Dans votre code, vous utilisez JFormattedTextField dans un SudokuTextBox pour appliquer la validation. Cependant, lors de la saisie de valeurs valides puis invalides, la zone de texte s'efface, mais la valeur valide précédente réapparaît lors de la tabulation vers l'avant.

Cause et solution

Votre problème réside dans la façon dont vous effacez la zone de texte après une entrée invalide. Lorsqu'il n'est pas valide, vous définissez le texte sur "null" au lieu de la chaîne vide. Cela amène le JFormattedTextField à conserver la dernière valeur valide comme valeur par défaut, qui réapparaît lorsque le focus change.

Pour résoudre ce problème, définissez simplement le texte sur une chaîne vide après une entrée non valide :

public void keyReleased(KeyEvent e) {
  //...
  // Corrected line:
  if(sudoku.isValid(row, col, value)) {
   sudoku.set(row, col, value);
  }
  else {
   sudoku.set(row, col, 0);
   tb.setText(""); // Set to empty string, not null
  }
  //...
}

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