Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
964 connectés 

  FORUM HardWare.fr
  Programmation

  [JAVA] Pb de FocusListener : je vais devenir FOU !!!

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Pb de FocusListener : je vais devenir FOU !!!

n°47882
petoulachi
A fortiori, brigadier chef
Posté le 19-07-2001 à 16:13:48  profilanswer
 

Bonjour, et bienvenue dans un monde de fou ...
Je sais que mon post est long, mais s'il vous plait donnez vous la peine de
le lire, car je bloque vraiment ...
 
desole, mais là j'ai vraiment un probleme etrange, je me creuse la tete
depuis des heures et je vais devenir fou !!
 
Je m'explique : j'ai une classe etandant JPanel. Cette classe contient un
Box, dans laquelle est ajouté un JPanel. Enfin, ce JPanel contient un
JTextField.
 
Ensuite, mon composant est parametrable, et on peut entre autres configurer
un masque de saisie. La verification pourra se faire soit a la fin de la
saisie, soit au cours de la frappe dans le champs de saisie.
Pour l'instant, j'essaie de le faire a la fin de la saisie.
 
Au niveau evenementiel, deux cas possibles :
-soit l'utilisateur appuis sur Entree (dans ce cas, c l'evenement
ActionPerformed qui est declenché)
-soit l'utilisateur passe a un autre champs de saisie. Donc c a dire lorsque
le champs de saisie perd le focus.
 
Jusque là tout va bien.
 
J'ai donc une classe pour mon composant, et une classe pour le listener .
Cette classe etends KeyAdapter et implemente ActionListener et FocusListener
(ouf!).
 
Donc dans ma classe listener, j'ai redefinie la methode FocusLost. La
methode FocusGained est bien redefini aussi (vide).
 
Voici le code dans FocusLost :

Code :
  1. public void focusLost(FocusEvent e)
  2. {
  3.   checkField();
  4.   if (!this.check)
  5.   {
  6.    JOptionPane.showMessageDialog(this.field, msgError,"Capture
  7. error",JOptionPane.ERROR_MESSAGE);
  8.    //on rend le focus au champ, pour ressaisir
  9.    this.field.text.requestFocus();
  10.   }
  11. }


 
Checkfield permet de verifier le champs de saisie, suivant les conditions
definies (aucune importantce ici). Il place le boolean check a faux si il y
a une erreur, et msgError contient alors le message d'erreur approprié.
Donc pour moi ça me paraissait bon : je lance, je saisie mal, je quitte le
champs de saisie : paf; le msg d'erreur, normal. Je fais ok, paf, a nouveau
le msg d'erreur. je fais ok, paf .... etc etc.
 
Ha bizarre.
je fais la trace : en fait je me rend compte que le focusLost se declhenche
deux fois : la premiere fois normal, puis la deuxieme est declenchée lors de
l'appel a showMessageDialog .... bizarre bizarre ?
j'ai essayer de feinter : j'ai retirer le focus listener sur mon composant
juste avant l'appel a la boite de dialogue, puis je lui redonne juste apres.
là effectivement ça marche, ça boucle plus. Par contre, a la place j'ai un
drole de bug avec le focus ;
Dans ma fenetre contenant mon composant, il y a aussi deux boutons.
Pour faire perdre le focus a mon champs de saisie, je click sur un bouton.
et bin une fois l'erreur declenchée, apres qd je passe avec la sourie au
dessus du bouton, celui s'enfonce comme si je clickai dessus alors que je ne
fais rien !!! et il reste enfoncé tant que ma sourie reste au dessus.
Si ensuite je reclick sur mon champs de saisie (prise de focus), on a
toujours le meme scenario pour le bouton. Et si cette fois je click sur
l'autre (pour faire perdre le focus a mon champs de saisie), alors ce bouton
a le meme comportement que precedemment. Et ça le fait toujours pour
l'autre.
 
Bref je devient FOU !! arrrg a l'aide  !!!

mood
Publicité
Posté le 19-07-2001 à 16:13:48  profilanswer
 

n°47986
wouatouwou​atou
Posté le 20-07-2001 à 00:20:48  profilanswer
 

pour le premier pb au sujet du dialog box et du focus en boucle.. c normal.. rien de bizarre a tout ca...
Je m'explique :
 
quand tu quittes ton champ de saisie => focuslost => dialogBox
 
Normal... :D
 
Mais quand tu tas ton focuslost... ton dialogbox souvre et ton champ de saisie reprend le focus...
 
Quand tu cliques sur ok => focuslost => fermeture de dialogBox
 
Là, ya a nouveau focuslost.. donc re dialogbox et re focus du champ de saisie.. etc..

n°47987
wouatouwou​atou
Posté le 20-07-2001 à 00:28:20  profilanswer
 

bref.. la solution c de ne pas mettre ton  
 
this.field.text.requestFocus()
 
dans ton focusLost() tel quel..
fo le faire lorsque tu fermes le dialogBox... enfin tu vois le truc... :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [JAVA] Pb de FocusListener : je vais devenir FOU !!!

 

Sujets relatifs
algo [java ] pour tracer un rectangle en utilisant les -x et -y aussi[java ]un truc ton con...
[JAVA] pb avec affichage multiple swing/drawCherche Applet Java....
[java] creer un fichier Xsl, utilisation des NamespaceJava et tableau Excel
[java] problème de dessin[JAVA] Comment connaitre la place restante sur un disque ?
JAVA - comment pas trainer la virtual machine ?????programme java pour creer des fichiers xsl
Plus de sujets relatifs à : [JAVA] Pb de FocusListener : je vais devenir FOU !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR