[Java] JEditorPane et couleur du texte

JEditorPane et couleur du texte [Java] - Java - Programmation

Marsh Posté le 26-02-2007 à 14:42:43    

Je me perds dans cette interface.
Je veux faire un truc a priori tout simple :  
j'ai un JEditorPane, et je veux y rajouter des lignes...mes lignes peuvent avoir 3 couleurs différentes...
 
j'ai compris qu'il fallait que je passe par le document, mais j'arrive pas à utiliser la méthode insertString.
 
J'ai essayé ça :  

Code :
  1. pane.getDocument().insertString(offset, text, sas);


 
l'offset est bon, le texte aussi, mais je comprends pas quoi mettre comme AttributeSet. J'ai essayé de rajouter un attribut dans l'attributeSet. Visiblement ca marche avec un système de clé + valeur. Je crois avoir compris comment spécifier la clé, mais pas la valeur...au final j'ai ça :  
 

Code :
  1. int offset = pane.getText().length();
  2.  SimpleAttributeSet sas = new SimpleAttributeSet();
  3.  sas.addAttribute(CharacterConstants.Foreground, new Color(255,0,0));
  4.  try {
  5.   pane.getDocument().insertString(offset, text, sas);
  6.  } catch (BadLocationException e) {
  7.   // TODO Auto-generated catch block
  8.   e.printStackTrace();
  9.  }


 
mais ca change rien, mon texte est toujours noir...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 26-02-2007 à 14:42:43   

Reply

Marsh Posté le 26-02-2007 à 19:35:04    

de ce que j'avais fait :
ajouter un style au document :

Code :
  1. Style global = document.addStyle("global", null);
  2.         Style s = document.addStyle(CLOCK, global);
  3.         StyleConstants.setForeground(s, Color.BLUE);


(bon ok, 2 styles)
 
puis à l'utilisation je créé l'attributeSet à partir du style.  
 
c'est dans ce merdier :
http://opensvn.csie.org/jcoincoin/ [...] neGUI.java


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-02-2007 à 19:56:21    

ah ok...j'avais bien vu ce truc du style, mais j'avais pas compris comment créer un style...en fait tu le crées, et tu le tune après...
 
je sais pas ce que t'en penses, mais je la trouve imbitable cette API document...c'est surement très puissant, mais c'est pas accessible :/
 
Merci pour le code :)


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 26-02-2007 à 20:00:06    

c'est le bordel.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-02-2007 à 20:42:36    

bon ca marche, mais j'ai une autre couille...je voudrais que chaque entrée soit une ligne nouvelle...si j'ajoute le texte ca marche, mais si je rajoute un "\n", ca déconne, je me prend une bad location exception...
 
lol...pour une raison que j'ai pas trop le temps de chercher :  
 
getText().length renvoit un offset pourri si ton texte se termine par un linefeed...
 
alors que document.getLength() renvoit un offset correct...


Message édité par Jubijub le 26-02-2007 à 20:45:52

---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 26-02-2007 à 20:54:36    

y'a une grosse feinte à la con sur la fin du Document je crois, va voir la javadoc. Mais ça lève un drapeau rouge dans ma mémoire.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-02-2007 à 21:08:36    

laquelle ? entre le container, le modèle et les sous composants du modèle, sachant que pour chaque y'a l'interface, 1-2 classes abstraites et l'implémentation, c'est pas ce qu'il y a de plus limpide :o


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 26-02-2007 à 21:12:42    

http://java.sun.com/j2se/1.4.2/doc [...] Position()
 
yes, voilà, quand on prend une position dans le document, elle peut bouger toute seule si on insère ou supprime du texte avant, il faut donc faire gaffe à pas conserver des références invalides. Et appeller getEndPosition pour faire son insertion à la fin du document.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 27-02-2007 à 11:33:08    

ok...donc c'est encore une 3ème méthode...pas très orthogonal tout ça, mais bon...
 
je vais prendre ça du coup :)
 
hannn, ca déconne...
 
getDocument().getEndPosition().getOffset() retourne 1 sur un document vide, et ça plante...
 
sans que je comprenne pkoi, il faut mettre -1 à la valeur de l'offset et ça marche...


Message édité par Jubijub le 27-02-2007 à 11:39:02

---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed