Problème en lançant un thread

haythemrafa Messages postés 7 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 11 mai 2012 - 26 avril 2012 à 00:17
 Utilisateur anonyme - 26 avril 2012 à 21:58
j'ai une JFrame qui contient un formulaire qui contient des JTextField,ComboBox et un bouton pour ajouter dans une base de donnée . à ce stade l'"ajout fonctionne normalement.
Après j'ai ajouté des labels vides initialement devant les JTextField et qui affichent un message si ce qui est écrit en JTextField n'est pas adéquat et revient vide si ce qui est saisi est corrigé(J'ai agit selon le focus du textField) et ça a marché aussi.
Ensuite, J'ai pensé à désactiver(disable) le JButton intialement et qu'il ne sera activé que si tous les textField sont remplis et les labels d'erruers sont vides (c'est à dire abscence d'erreur).


//la fonction qui vérifie que le bouton peut être activé ou non


public void controleButton(JButton btn){
if((txtNumB.getText().equals(""))||(txtNom.getText().equals(""))||(txtAdresse.getText().equals(""))||(txtDate.getText().equals(""))||(txtHeurE.getText().equals(""))||(txtHeurS.getText().equals(""))||(lblNumB.getText().equals("")==false)||(lblQt.getText().equals("")==false)||(lbleDate.getText().equals("")==false)||(lblHE.getText().equals("")==false)&&(lblHS.getText().equals("")==false))
btn.setEnabled(false);
else
btn.setEnabled(true);

}

// la méthode run du Thread(la même classe du frame hérite du Thread)

public void run(){
controleButton(bAjouter);
}

que je lance l'application Je reçois une erreur :

Exception in thread "Thread-2" java.lang.NullPointerException
at SaisieDonnees.controleButton(SaisieDonnees.java:490)
at SaisieDonnees.run(SaisieDonnees.java:496)

5 réponses

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
26 avril 2012 à 07:06
Salut,

es-tu certain que tous tes composants sont créés avant de lancer ta thread?

Au lieu d'une thread, pourquoi ne pas faire la vérification lorsque après avoir vérifié que tes champs soient bien remplis, donc quand tu changes le focus?
0
haythemrafa Messages postés 7 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 11 mai 2012
26 avril 2012 à 12:06
Oui l'instruction th.start() est la dernière instruction dans le constructeur.
Parce que peut être celui qui va saisir ne suit pas l'ordere de siaise et peut remplir le dernier TextField par exemple et après reveient au troisième à la fin . donc Je ne peux pas dire le focus va être mis sur quel composant exactement ???
0
haythemrafa Messages postés 7 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 11 mai 2012
26 avril 2012 à 12:15
this.start *
0
haythemrafa Messages postés 7 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 11 mai 2012
26 avril 2012 à 17:07
Je vois ce que tu as voulu dire :)
Ouais ça marche maintenant merci !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 avril 2012 à 21:58
Passe ton sujet en résolu en cliquant sur "Réponse acceptée" dans ce cas.

--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
Rejoignez-nous