Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2699 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  JtextArea et couleur de texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JtextArea et couleur de texte

n°558566
3xc4l18ur
question = ( to ) ? be : ! be;
Posté le 04-11-2003 à 13:48:44  profilanswer
 

Bonjour a tous,
 
Voila je realise un rcon Q3 en java et lorsque je recois les reponses du server Q3, parfois certain joueurs ont des noms composé de "^1Ex^2ca...". Je sais que ces joili caracteres servent a colorié le nom du joueur mais je voudrais que mon JTextArea puisse changer de couleur en fonction des charactere...
 
 
Ma question ne pose pas que l'algo car elle serait assez bidon..
Mais plutot sur une des methode d'un JTextArea (genre setColorFont()) qui permettré d'ecrire... EXCA
 
Merci :jap:  
 
Ps: Le JTextPane le fait parait il mais je n'arrive pas a lui specifié un nb de lignes et de colonnes comme pour le JTextArea...

mood
Publicité
Posté le 04-11-2003 à 13:48:44  profilanswer
 

n°558605
Krueger
tout salaire demande dutravail
Posté le 04-11-2003 à 14:14:09  profilanswer
 

Tu dois pouvoir faire quelque chose avec la méthode getHighlighter de la classe javax.swing.text.JTextComponent en ajoutant des "highlights" (addHighlight) dont le javax.swing.text.Highlighter.HighlightPainter est un javax.swing.text.DefaultHighlighter.DefaultHighlightPainter que tu redéfinis de façon à dessiner les caractères en une certaine couleur.
 
J'ai utilisé cette dernière pour surligner, mais il doit y avoir moyen d'intervenir sur la couleur du texte uniquement.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°558621
Krueger
tout salaire demande dutravail
Posté le 04-11-2003 à 14:23:03  profilanswer
 

Tu peux aussi jeter un oeil sur le forum de Sun :
http://forum.java.sun.com/thread.j [...] ead=168251
;)


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°560112
veryfree
Posté le 05-11-2003 à 19:31:00  profilanswer
 

3xc4l18ur a écrit :

Bonjour a tous,
 
Voila je realise un rcon Q3 en java et lorsque je recois les reponses du server Q3, parfois certain joueurs ont des noms composé de "^1Ex^2ca...". Je sais que ces joili caracteres servent a colorié le nom du joueur mais je voudrais que mon JTextArea puisse changer de couleur en fonction des charactere...
 
 
Ma question ne pose pas que l'algo car elle serait assez bidon..
Mais plutot sur une des methode d'un JTextArea (genre setColorFont()) qui permettré d'ecrire... EXCA
 
Merci :jap:  
 
Ps: Le JTextPane le fait parait il mais je n'arrive pas a lui specifié un nb de lignes et de colonnes comme pour le JTextArea...


 
tu crée une classe qui herite de JTextPane:
dans le constructeur:

Code :
  1. style = new SimpleAttributeSet();
  2.         this.setContentType("text/rtf" );
  3.         this.setEditorKit(new RTFEditorKit());
  4.         doc = this.getDocument();


 
 

Code :
  1. public void append(String msg, Color color, Color bgColor, boolean isBold) {
  2.         StyleConstants.setForeground(style, color);
  3.         StyleConstants.setBackground(style, bgColor);
  4.         StyleConstants.setBold(style, isBold);
  5.         int len = doc.getLength();
  6.         try {
  7.   doc.insertString(len, msg, style);
  8.         } catch (Exception e) {
  9.             System.out.print("Failed to append msg ["+msg+"]" );
  10.         }
  11.     }


Message édité par veryfree le 05-11-2003 à 19:32:30
n°561485
3xc4l18ur
question = ( to ) ? be : ! be;
Posté le 07-11-2003 à 08:23:30  profilanswer
 

Merci a tous

n°561565
EpoK
Let's burn
Posté le 07-11-2003 à 10:38:48  profilanswer
 

veryfree a écrit :


 
tu crée une classe qui herite de JTextPane:
dans le constructeur:

Code :
  1. style = new SimpleAttributeSet();
  2.         this.setContentType("text/rtf" );
  3.         this.setEditorKit(new RTFEditorKit());
  4.         doc = this.getDocument();


 
 

Code :
  1. public void append(String msg, Color color, Color bgColor, boolean isBold) {
  2.         StyleConstants.setForeground(style, color);
  3.         StyleConstants.setBackground(style, bgColor);
  4.         StyleConstants.setBold(style, isBold);
  5.         int len = doc.getLength();
  6.         try {
  7.   doc.insertString(len, msg, style);
  8.         } catch (Exception e) {
  9.             System.out.print("Failed to append msg ["+msg+"]" );
  10.         }
  11.     }




 
a quoi sert la premiere partie on peu pas tout simplement récupérer le doc associé au jtextpane et utiliser la fonction insertString que tu a fait ?

n°561668
benou
Posté le 07-11-2003 à 12:08:49  profilanswer
 

EpoK a écrit :


 
a quoi sert la premiere partie on peu pas tout simplement récupérer le doc associé au jtextpane et utiliser la fonction insertString que tu a fait ?


ben regarde : dans insertStrig il utilise un paramêtre style.
Faut bien qu'il l'ait créé quelque part [:spamafote]


Message édité par benou le 07-11-2003 à 12:09:02

---------------
ma vie, mon oeuvre - HomePlayer
n°561745
EpoK
Let's burn
Posté le 07-11-2003 à 13:39:15  profilanswer
 

en effet  [:meganne]

n°561747
EpoK
Let's burn
Posté le 07-11-2003 à 13:47:36  profilanswer
 

car moi en fait j'ai plusieur string que je met dans une seul et j'affiche que la finale mais il me faut une couleur pôur chaque chaine, mais sur la chaine final je peut pas retrouver le début ou la fin d'un petite chaine
 
du cou je pense a faire un Document, à add au fur et a mesur dans le doc et faire un setDocument a la fin
 
c'est fesable vous pensez ?

n°561749
veryfree
Posté le 07-11-2003 à 13:49:57  profilanswer
 

oui

mood
Publicité
Posté le 07-11-2003 à 13:49:57  profilanswer
 

n°561963
EpoK
Let's burn
Posté le 07-11-2003 à 19:10:59  profilanswer
 


 
et comment je fait  [:meganne]  
 
je me fait une classe qui extends Document ? ou StyledDocument ou quoi ? je rajoute les meme fonctions ?

n°561970
veryfree
Posté le 07-11-2003 à 19:23:59  profilanswer
 

Citation :

je pense a faire un Document, à add au fur et a mesur dans le doc et faire un setDocument a la fin


 
 
t as tout dit la :jap:
 
le doc tu le recupere via tonTextComponent.getDocument();
 
et tu t'inpire du bout de code que je t'ai filé
 
 
 :hello:

n°561990
EpoK
Let's burn
Posté le 07-11-2003 à 20:10:22  profilanswer
 

veryfree a écrit :

Citation :

je pense a faire un Document, à add au fur et a mesur dans le doc et faire un setDocument a la fin


 
 
t as tout dit la :jap:
 
le doc tu le recupere via tonTextComponent.getDocument();
 
et tu t'inpire du bout de code que je t'ai filé
 
 
 :hello:  


 
hum hum :)
 
ca marche ^^
 
tu peux juste m'indiquer comment marche le StyleConstants pour choisir la font ?  
 
merci  :hello:  :jap:

n°562023
veryfree
Posté le 07-11-2003 à 22:01:35  profilanswer
 

setFontFamily(MutableAttributeSet a, String fam)  
 
 
 
 
la javadoc bourdel

n°562039
EpoK
Let's burn
Posté le 07-11-2003 à 22:42:06  profilanswer
 

veryfree a écrit :

setFontFamily(MutableAttributeSet a, String fam)  
 
 
 
 
la javadoc bourdel  


 
oui oui j'ai trouvé ca mais je sais pas comment l'utiliser
 
mais le reste marche tres bien :) merci  :hello:

n°1657184
DaV-X
PSN : kaldor37
Posté le 12-12-2007 à 15:15:45  profilanswer
 

Salut à tous, désolé de remonter ce vieux vieux topic, mais je suis embeté avec la methode insertString.
 
J'ai un thread qui tourne, et qui de temps en temps (une fois par seconde, variable) appelle la méthode :
 

Code :
  1. public void addLog(String s, Color c, boolean bold){
  2.  try{
  3.   SimpleAttributeSet style = new SimpleAttributeSet();
  4.   StyleConstants.setForeground(style,c);
  5.   StyleConstants.setBackground(style,taDetails.getBackground());
  6.   StyleConstants.setBold(style,bold);
  7.   taDetails.getDocument().insertString(taDetails.getDocument().getLength(),s,style);
  8.   // Scroll lock
  9.   if(chkbxScrollLock.isSelected()){
  10.    try{
  11.     taDetails.scrollRectToVisible(taDetails.modelToView(taDetails.getDocument().getLength()));
  12.    }catch(Exception e){}
  13.   }
  14.  }catch(Exception e){
  15.   System.out.println("Err insert : " + e);
  16.   e.printStackTrace();
  17.  }
  18. }


taDetails étant mon JTextPane  :jap:  
 
De temps en temps ca marche, mais la plupart du temps pas du tout l'eventDispatcher me pete des mega exceptions du genre :
 

Code :
  1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  2. at javax.swing.plaf.basic.BasicTextUI$RootView.paint(Unknown Source)
  3. at javax.swing.plaf.basic.BasicTextUI.paintSafely(Unknown Source)
  4. at javax.swing.plaf.basic.BasicTextUI.paint(Unknown Source)
  5. at javax.swing.plaf.basic.BasicTextUI.update(Unknown Source)
  6. at javax.swing.JComponent.paintComponent(Unknown Source)
  7. at javax.swing.JComponent.paint(Unknown Source)
  8. at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
  9. at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
  10. at javax.swing.JComponent._paintImmediately(Unknown Source)
  11. at javax.swing.JComponent.paintImmediately(Unknown Source)
  12. at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
  13. at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
  14. at java.awt.event.InvocationEvent.dispatch(Unknown Source)
  15. at java.awt.EventQueue.dispatchEvent(Unknown Source)
  16. at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
  17. at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  18. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  19. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  20. at java.awt.EventDispatchThread.run(Unknown Source)


 
Et le try de la fonction addLog attrape une NullPointerException qui sort de nulle part :/
 
Si quelqu'un peut m'aider je lui en serait tres reconnaissant :)
 
PS: Ca marchait tres bien avant avec une JTextArea et la méthode append() de cette derniere.


Message édité par DaV-X le 12-12-2007 à 15:21:28
n°1657189
DaV-X
PSN : kaldor37
Posté le 12-12-2007 à 15:22:16  profilanswer
 

Ca le fait plus quand je met en commentaire la partie pour le "scroll lock", pour que le scroll se fasse en meme temps qu'il y a des ajouts.

n°1657198
DaV-X
PSN : kaldor37
Posté le 12-12-2007 à 15:37:04  profilanswer
 

Bon ben résolu en changeant de méthode pour le scroll lock.
J'ai remplacé par le code ci-dessous et ca fonctionne aussi bien [:spamafote]
 

Code :
  1. taDetails.setCaretPosition(taDetails.getDocument().getLength());


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  JtextArea et couleur de texte

 

Sujets relatifs
[VBA] Remplacer du texte par un champ WordVbScript + Excel + Fichier texte
Macro word : changer la police et la taille caractère d'un texte ?[Python] Imprimer une liste dans une zone texte...
[PHP] Passer un texte avec un '&' comme paramètreFonction texte
Réaliser un petit traitement de texte ?[PHP/MySQL] Fichiers Texte ou Base de données ?
formatage de texte avec include[résolu]Programme pour tester des regexp sur du texte?
Plus de sujets relatifs à : JtextArea et couleur de texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR