haythemrafa
Messages postés7Date d'inscriptionmercredi 25 avril 2012StatutMembreDernière intervention11 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)
cormandyr
Messages postés600Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention 8 juillet 201611 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?
haythemrafa
Messages postés7Date d'inscriptionmercredi 25 avril 2012StatutMembreDernière intervention11 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 ???