Bonjour,
Ca ne me ressemble pas, mais je reviens m'en remettre à vos compétences, je me suis arraché les cheveux toute la nuit pour essayer de comprendre ce qui ne va pas dans mon code... Il faut croire qu'on ne nous apprend rien en cours... Ou du moins, très mal.
J'ai un élément d'interface (un JPanel) qui écoute une instance d'une classe de données, un Personnage. Cet élément possède un JTextField lui même écouté par une autre classe, le Contrôleur. Lorsque ce JTextField est modifié (keyReleased()), le controleur demande la modification du personnage, qui à son tour, demande la mise à jour de ses écouteurs (le JPanel, celui-ci met ensuite à jour le texte de plusieurs Label qui lui appartiennent).
Le process en lui même fonctionne, j'ai bien une mise à jour qui s'effectue, seulement au niveau graphique, je me retrouve avec des choses plutôt étranges. Les Label modifiés ne ressemblent plus à grand chose. J'ai bien essayé un repaint(), mais c'est encore pire, et je n'arrive pas a comprendre pourquoi (lors du repaint, j'ai carrément d'autres éléments qui se retrouvent dédoublés dans un coin du panel). Un revalidate() ne fonctionne pas non plus, il ne change rien.
Voici mon code, sans le personnage qui n'aurait à mon avis que peu d'intérêt ici, mon évènement étant correctement généré.
Je peux ajouter une copie d'écran si vous le désirez, merci d'avance, vous pouvez sauver les quelques cheveux qu'il me reste...
Dernière minute : une idée m'est venue Je me suis dit qu'il y avait certainement quelque chose que je n'avais pas bien compris dans le process de rafraichissement des fenêtres/éléments en JAVA... (il m'a quand même fallu quelques heures...) J'ai donc ajouté, en lieu et place du duo revalidate/repaint, un simple setVisible(false);setVisible(true); ... Et ca fonctionne Ca ne me satisfait pas en revanche pour plusieurs raisons. J'en déduis donc qu'il me manque quelque chose pour effectuer le rafraichissement dans les rêgles du lard. Donc mon nouveau problème : connaissez-vous une bonne documentation sur ce point précis, en français si possible (C'est quand même un peu technique donc... N'allons pas risquer de comprendre de travers ). Ou mieux : quelqu'un aurait quelques minutes a perdre pour m'expliquer ce que j'ai raté? Rien qu'un nom, que je trouve sur google
Merci ^^
Partager