En Java de memoire pour comparer deux strings on utilise string1.equals(string2). Ca resoudra tes problemes normalement. Sinon de memoire ca fait juste de la comparaison de reference donc ce n'est pas ce que tu veux.
PS : A chaque post tu devrais faire quelques screen de ton UI car c'est pas toujours evident de la decrire et donc pas toujours evident de comprendre les changements et ce qu'il se passe ent temps reel devant l'utilisateur.
Regardez si vous voulez une image, j'ai rajouté une ligne montrant bien que la bonne réponse pour les questions à choix correspond bien avec la réponse du joueur !
Je n'y comprend vraiment rien ! ![]()
tbop2
Oui j'ai pensé à faire un screen mais j'ai posté après ![]()
Oh génial tbop2, en effet ça marche !
Je connaissais pas cet exception avec les String, je pensais que le == suffisait, ça ne me mettait pas d'erreur en prime.
Haaaaaaaaa bon bah là je crois que je ne devrais plus trop avoir de problème, le programme va être fini dans la journée je pense ![]()
Oh génial tbop2, en effet ça marche !
Je connaissais pas cet exception avec les String, je pensais que le == suffisait, ça ne me mettait pas d'erreur en prime.
Haaaaaaaaa bon bah là je crois que je ne devrais plus trop avoir de problème, le programme va être fini dans la journée je pense ![]()
Yay, verifie bien que tu as modifie ces comparaisons erronnees entre deux strings dans tout ton code par ailleurs.
Bon j'ai parlé un peu vite, il y a un truc que j'ai oublié de revoir, ce sont l'affichage des points, je pensais que ça se faisait automatiquement et s'actualisait pour chaque joueur dès qu'il avait un point en plus, mais apparemment non.
J'ai essayé mais tout ce que j'arrive à faire c'est de rajouter les infos du joueur et ses points en plus mais à la suite des infos déjà entrées au début :
Je sais pas comment procéder, j'ai utilisé un add, peut-être que c'est ça qu'il faut modifier pour faire comprendre qu'il faut remplacer l'ancienne ligne par la nouvelle, mais j'ai pas trouvé d'info ( je suis tombé sur ça mais sans plus http://www.developpez.net/forums/d771195/java/general-java/apis/documents/pdf-remplacer-texte/ ).
Ou peut-être qu'il faut faire autrement ?
En Java, tu as 2 grandes familles : les objets et les types primitifs.
Les types primitifs sont les types int, long, float, double ...
Les Objets, c'est le reste.
Grosso-modo : tout les types commençant par une majuscule SONT des Objets, tout les types commençant par des miniscules sont des types primitifs.
Pour tester l'égalité entre 2 types primitifs, on passe par "==", et celui-ci compare leur valeur respective, renvoyant true ou false, comme une égalité "normale".
Pour tester l'égalité entre 2 objets, on peut utiliser "==", mais ce test compare alors les places mémoires des deux objets.
Il faut plutôt utiliser la méthode equals, qui est hérité du type Object. Celle-ci permet de comparer les valeurs des objets. Entre 2 strings, c'est elle qu'il faut utiliser. Entre 2 Objets de ton crû comparable, il faudra la redéfinir, car elle ne compare pas grand chose à la base.
Note : il est conseillé de redéfinir aussi la méthode compareTo lorsque equals est redéfini.
Pour ton souci de points, une fois les points changé, demande un "redessinement" du layout contenant les joueurs ![]()
(ou juste du JLabel correspond).
Bunyan
Le redessinement je l'ai mit pourtant :
playerBox.add(new JLabel (index.toString()));
playerBox.revalidate();
Mais comment faire comprendre que ça doit remplacer la bonne ligne et ne pas aller à la suite ?
Faut utiliser autre chose que le add à mon avis non ?
Et aussi je viens de voir dans mon image...quand la bonne réponse est A, le joueur a beau mettre A ça compte faux, bizarre le B, C et D passent ![]()
J'ai personnellement pas tres bien compris ton probleme (et je t'assure que ton programme va avoir plein de bugs que tu n'as pas vu du aux petits problemes de GUI mal designee que j'ai pointes hier et qui t'eviteraient une grosse dose de problemes en aval). Ni compris le rapport avec le lien du forum qui parle de modifier un fichier PDF... ou est le rapport ? ![]()
Heu bonne question tbop2, je me suis gourré de lien ![]()
J'étais tombé sur un autre lien développez.net or c'était un article qui parlait d'affichage et comment afficher du texte.
Je vais réexpliquer si t'as pas comprit.
En bas à droite il y a les joueurs qui apparaissent une fois l'inscription finie, au début ils ont 0 points, dès qu'ils marquent un point, j'aimerai que le 0 passe à 1 et etc...
Or là le soucis c'est que ça me rajoute la même ligne en dessous, là normalement je ne devrais avoir que deux lignes, une pour la joueur 1 et l'autre pour le joueur 2, pas 4 au total...
Or mon code rajoute à la suite à cause du "add" je suppose, je sais pas comment procéder pour faire comprendre qu'il doit remplacer la bonne ligne correspondant au bon joueur.
Ok. Dans ce cas la c'est une fois de plus un probleme de GUI mal pensee avant tout.
Je ne connais plus par coeur les composants de Swing mais je suggererais que tu fasses une JTable de taille Nx2 avec N le nombre de joueurs et avec le formatage suivant:
Nom | Points
--------------
Bobby | 5
--------------
Marcel | 8
--------------
Dieu | 181
Bonne chance!
http://pastebin.com/JxWHezYp
Voici mon code si vous voulez voir de plus près.
Sinon faut peut-être ne pas mettre new aussi et indiquer qu'il faut juste changer nbpoints non ? Mais là non plus j'ai aucune idée vu que ça se trouve dans une ArrayList ![]()
tbop2
Ouais, je vais voir si d'ici ce soir je trouve une solution à mon problème, sinon demain j'appliquerai ta solution, dommage que ça me fasse faire des changement dans ma GUI...
Je vais m'acheter le livre "Les GUI pour les nuls" pour mon prochain stage je crois ![]()
Oh sinon la solution est toute simple dans ton probleme, je te conseille juste de te renseigner sur ce qu'est une ArrayList vu qu'apparemment tu n'as pas trop compris l'utilite de cet objet
Une fois fait c'est du tout cuit ![]()
Une ArrayList est un tableau mais "amélioré" dans le sens où tu peux l'agrandir contrairement à un tableau classique qui une fois défini ne peut plus être modifié niveau taille.
Une ArrayList est extensible, c'est comme ça que je l'ai comprit.
Et dans mon programme, mon ArrayList contient les données de la class Joueurs.
Sinon j'ai cherché des pistes pour régler ce problème, est ce que ArrayList.remove(blabla) serait une solution ? J'ai essayé de l'appliquer mais je ne pense pas que ce soit adapté à mon problème. Mais peut-être est ce une bonne piste ?
C'est étrange que tu ne comprennes pas ce que tu as fait alors. Tu as un ArrayList de JLabel pour afficher les scores de chaque joueur... Quand un joueur i gagne un point il suffit juste d'obtenir le i-ème élément de ton ArrayList puis de remplacer le text de JLabel par ce que tu veux.
Dans ton cas ça ressemblerait à un truc du style :
playerBox[i].setText("Joueur n°" + (i + 1) + ": " + index.getNom() + " " + index.getPoints() + " point(s)");
Tu peux même faire un joli if pour la bonne conjugaison.
... Si j'ai bien compris ton architecture sous-jacente bien sûr !
PS : Fais bien attention aux noms de variables encore une fois, remplacer "index" par "joueur" ça ne mange pas de pain et c'est juste 100 fois plus simple à lire et à comprendre ![]()
Hum ouais ![]()
Moi je me faisais chier à vouloir d'abord supprimer la ligne pour mettre la nouvelle à la place...
Je testerai mais en effet, récupérer le bon élément avec i qui indique le n° peut marcher, c'est fou que je n'y ai pas pensé parce que je l'ai déjà appliqué ce genre de procédé, mais en pascal ![]()