Probleme affichage dans un JTextArea

Fermé
rela33 Messages postés 4 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 8 mai 2008 - 7 mai 2008 à 17:08
 rela33 - 14 mai 2008 à 14:26
Bonjour à tous,

j'ai mon TextArea dans une classe appelée message :

 public Message(){
		 reponse = new JTextArea("",10, 10);
		 reponse.setEditable(false);
		reponse.setText("bijour");	
		
	}
	 
	public int display(MoneticMessageDisplay message) {		
		System.out.println("Sa doit ecrire");		
		reponse.setText(message.getDisplay());				
		return 0;
	}
	
	public JTextArea getResponse(){
		System.out.println("YA KELKUN!!! " + reponse.getText());		
		 return reponse;
    }	



La methode display() donne les différents messages à afficher dans le JTextArea. (Ce sont des messages concernant une initialisation d'un API mais c'est pas important)

Le getResponse() me permet de renvoyer le JTextArea à la vue et le println c'était pour vérifier le contenu du TextArea et il est bien modifié à chaque nouveau message!
Mais au point de vue graphique je reste toujours avec un bijour.

J'ai pensé que c'était un problème de rafaichissement, j'ai essayé pas mal de truc avec la gestion d'évènement ou le modifier en JTextField et utiliser TextListener ou même un timer pour le rafraichir à chaque fois mais soit je m'y prend mal soit ce n'est pas la bonne méthode.

Dans ma vue j'ai ça:
Message message = new Message()	
texteAsc = new JScrollPane(message.getResponse());
add(texteAsc, BorderLayout.CENTER);


Merci d'avance!

8 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
7 mai 2008 à 17:10
Je comprends pas c'est quoi ce MoneticMessageDisplay ? ça sert à quoi?
0
rela33 Messages postés 4 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 8 mai 2008
7 mai 2008 à 17:16
En fait je suis en stage et je dois ajouter mon ptit bout de prog à un programme déjà fait.

Monetic message Display est une classe qui me permet de recevoir des affichages d'un API, je dois lancer l'initialisation et recevoir via mon textarea le résultat de cette initialisation et il y a donc plusieurs messages qui doivent apparaitrent au fur et a mesure...

J'espère avoir été plus claire.
0
Up!

C'est très important sviouplait! Je suis dessus depuis le début de la semaine!
0
Marco la baraque
8 mai 2008 à 10:54
Bonjour,
1/ta méthode getMessage() de MoneticMessageDisplay retourne bien un String?
2/ Ca n'a rien à voir, mais pourquoi ta méthode display retourne 0? A quoi te sert-il?

Merci
0
Déja merci de me réponde jsuis limite desespérée là j'en peux plus!

<quote>
1/ta méthode getMessage() de MoneticMessageDisplay retourne bien un String?
</quote

je pense que tu parle de message.getDipslay()? Si c'est ca oui elle retourne bien un string pour être plus préciser je reçois parfaitement les messages sur la console mais je n'arrive pas à les afficher dans ma TextArea

<quote>
2/ Ca n'a rien à voir, mais pourquoi ta méthode display retourne 0? A quoi te sert-il?
</quote>

Je me posée la même question! Et mon chef de stage n'a pas pu me répondre mais je dois laisser comme ça. En fait moi j'ai du implémenté l'interface et danc cette interface cette fonction était déclaré comme cela donc j'ai laissé.
De plus je ne peux pas utiliser cette fonction par moi même car le paramètre message est trouvé grâve à plein d'autre fonctions!!
En fait quand j'appuis sur le bouton valider je lance mon initilisation comme cela :

           public void actionPerformed(ActionEvent e) {
		
		if (e.getActionCommand().equals("Quitter"))	{
			System.exit(0);
		}
		else{
			
			nom = VueAdmin.getNom().getText();
			resulVerifNom = VueAdmin.VerifNom(VueAdmin.getNom());
			resulVerifTpv = VueAdmin.VerifTPVnb(VueAdmin.getTPV());
			
       //si les données rentrées sont correctes je lance l'initialisation
			if (resulVerifNom && resulVerifTpv)
			{	
					lancerinitialisation()
			}
              }

				
				    
0
rela33 Messages postés 4 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 8 mai 2008 > rela33
8 mai 2008 à 11:06
Désolé j'ai appuyé sur une mauvaise touche et sa a envoyé le message jai pas pu le relire y a plein de fautes sorry!
0
rela33 Messages postés 4 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 8 mai 2008
8 mai 2008 à 11:12
Quelques info suppl

Lancerinitialisation() c'est plusieurs fonctions que je n'ai pas programmé moi même ça vient de l'entreprise donc je ne les mets pas ici.

De plus je pense à utiliser un Thread et ensuite EventQueue.InvokeLater (j'ai vu ça dans un forum)
Mais j'ai beaucoup de mal à voir comment l'implémenter dans mon code..

En effet le premier problème c'est que si je modifie mon textArea dans le controleur dans la methode ActionPerformed ça marche (il n'y a pas la notion d'affichage au fur et à mesure c 'est juste un TextArea.setText("kikou"))

Mais si j'essaye de le faire avec la classe Message que je dois utiliser, la modification n'est pas prise graphiquement (parce que sur la console les modifs ont bien été fait)
0
Marco la baraque
8 mai 2008 à 20:25
Resalut,
Ok pour tes explications. Si ton message est bien affiché en console, c'est qu'effectivement c'est ok sur ce point là.
As-tu essayé la méthode repaint() dans ta classe d'affichage (elle doit étendre JFrame non?) ?
0
Coucou merci encore pour ta réponse.
Sans vouloir raconter ma vie, je suis en stage sans mon chef de projet, sans celui qui s'occupe de moi sur ce projet et sans un autre qui m'a déjà aidé en Java.
Oui je demande votre pitié lol .

Pour ce qui est de repaint() je l'ai essayé un peu partout...
Dans la classe Message ds la méthode display(..) à chaque fois qu'on a un message on rafrachit comme tu me l'as proposé si j'ai bien compris. J'ai essayé sur le TextArea et sur la vue mais rien ni fait... J'ai essayé sur le controleur à mon avis c'est faut mais au point j'en étais j'essayais vraiment partout! J'ai même essayé un validate aussi ou un update() sans succès peut être que je ne les place pas au bon endroit aussi je ne sais pas trop...

Ce qui est bizzare ce que ok l'affichage au fur et à mesure ne marche pas, je veux bien. Mais ça devrait au moins m'afficher tous les messages à la fin alors?
0

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

Posez votre question
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
9 mai 2008 à 12:09
Essaie plutôt de faire :

reponse.setText(response.getText()+"\n"+message.getDisplay());

Parce qu'en fait je viens de voir que tu ne reprends pas le contenu du TextArea pour le réafficher à nouveau, tu ne fais que le remplir avec une nouvelle phrase sans réécrire le contenu déjà présent d'où ce que je te propose.

C'est à dire remplir le contenu du textarea avec ce qui était déjà dedans avant, d'où mon response.getText() qui récupère le contenu du textarea, puis de passer à la ligne avec un \n, puis de rajouter à cela ton arrivée de message.

Essaie et dis moi si ça marche.
0
J'ai essayé et donc je reprend bien tous les messages sur la console mais toujours rien niveau graphique

console:
reponse :bonjour
C3 5.2 - 3.00  21/12/07 A03E            
Initialisation Admin en cours...        
Initialisation Admin Terminee           
Initialisation Cheque en cours...       
Initialisation Cheque Terminee          
Initialisation Amex en cours...         
Initialisation Amex Terminee            
CHARGEMENT LECTEUR EN COURS             
CHARGEMENT LECTEUR TERMINE              
Initialisation Amex Terminee            
Initialisation Aurore en cours...       
Initialisation Aurore Terminee          
Initialisation Sofinco en cours...      
Initialisation Sofinco Terminee         
Initialisation EMV en cours...          
Initialisation EMV Terminee             
CHARGEMENT LECTEUR EN COURS             
CHARGEMENT LECTEUR TERMINE              
Initialisation EMV Terminee  

"reponse :" c'est pour m'indiquer que c'est l'affichage de la TextArea

Et au niveau graphique j'ai que bonjour.

Pour ce que tu m'as dit sinon , je pense faire reponse.append au lieu de setText aprés j'aurais pas le \n mais c'est faisable aussi de toute façon ça revient à la même chose.

Je pense que pour l'instant le véritable problème c'est que quand je passe par la classe Message pour modifier graphiquement ça ne fait rient alors que quand je passe par le controleur (le bouton valider) je n'ai pas de souci...
Mais je ne vois pas du tout pourquoi...
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
9 mai 2008 à 13:44
Je comprends pas ta console t'affiche ce qui sort dans ta classe Message ou bien l'affichage console provient d'une autre classe?

Parce que ayant déjà fait des JTextArea je n'ai jamais eu de problème comme cela.

Ce que je crois est que ton constructeur est bien initialisé à l'appel de la classe, mais ensuite je crois que ton objet Message n'est plus utilisé, parce que sinon si des messages étaient injectés ils apparaîtraient hors ce n'est pas le cas dans ton jtextarea.

Tu es sûr que les messages sont bien envoyés au niveau graphique avec la méthode Display ?

Moi je serais toi je passerais en mode full debug pour voir où ca cloche, car là sinon c'est pas facile de trouver.

0
Elle m'affiche le contenu du TextArea , ici je le regarde dans la classe message avec System.out.println(reponse.getMess());
Je viens de faire la même chose mais sur la classe du controleur et à la fin de l'initialisation j'obtien le résultat du contenu du TextArea et j'ai bien tous les messages.

Que veux tu dire par "les messages sont bien envoyés au niveau graphique?" C'est surement là méthode que je cherche. A part faire un setText(...) je ne sais pas quoi faire d'autre pour l'envoyer au niveau graphique.
0
Bonjour,
juste une petite remarque, pourquoi mettez vous votre JTextArea en lecture seule?

CF:
message.setEditable(false);

Voici ce que la javadoc dit:

setEditable

public void setEditable(boolean b)

Sets the specified boolean to indicate whether or not this TextComponent should be editable. A PropertyChange event ("editable") is fired when the state is changed.

Parameters:
b - the boolean to be set


Je pense que votre problème viens de là. A moins que cette propriété ne bloque l'écriture que dans le GUI. Et non pas par programme. Bien à vous.
0
Oui c'est pour éviter que l'utilisateur ne modifie les messages mais j'ai résolu un probleme!!!
C'est bon les messages s'affichent!! vous ne pouviez pas m'aider c'était dans une fonction que je n'ai pas mise ici.
En fait je faisais dans une fonction : lafonction(new Message())
Hors dans new message je créé une TextArea donc j'avais toujours cette TextArea affiché avec que le bonjour, je réinitialisait à chaque fois en fait!!!
Bref j'ai fait mon TextArea plus haut et maintenant c'est bon.

Now le véritable problème!!!!!
Comment afficher les messages au fur et à mesure au lieu que tout arrive à la fin?
(Je vais réessayer tout ce que j'ai déjà fait parce que maintenant peut être que ça marchera ^^)
Si jamais vous avez une idée je suis tout ouïe!!!
0
rela33 > rela33
14 mai 2008 à 10:01
je remonte ce sujet !
Si quelqu'un à une idée sur la façon d'afficher un message dans un Jtextarea au fur et a mesure je suis preneuse!
Merci!
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
14 mai 2008 à 12:18
SI c'est l'API qui envoie le résultat, alors c'est dans l'API qu'il faut modifier l'envoie des messages d'initisalisation.
0
Pourquoi pas, mais je ne pense pas avoir le droit de toucher à ça. Quelqu'un est venu m'aider aujourd'hui mais il n'a rien trouvé...il doit revenir me voir normalement dans l'après midi pendant ce temps ben je fais mon mémoire!!

En tout cas merci à tous!
Bonne continuation!
0