2009-03-02 4 views
1

Je fais des recherches sur la façon de "dessiner" du texte attribué sur Graphics2D.Le "contenu" de AttributedString peut-il être enregistré dans un fichier?

Donc, je suis intéressé est-il possible d'enregistrer contenu de AttributedString dans un certain format?

Je sais qu'il pourrait être sérialisé Java, mais, je n'ai pas besoin de cette solution ici.

De même, si quelqu'un connaît un exemple qui montre comment modifier AttributedString?

Voici un code Java, pour obtenir une idée:

public void paint(Graphics g) { 

Graphics2D g2 = (Graphics2D) g; 

AttributedString as new AttributedString("Lorem ipsum dolor sit amet..."); 
Font font1 = new Font("SansSerif" , Font.PLAIN , 20); 
as.addAttribute(TextAttribute.FONT  , font1  ); 
as.addAttribute(TextAttribute.FOREGROUND , Color.black); 
as.addAttribute(TextAttribute.FOREGROUND , Color.blue , 4 , 9); 

AttributedCharacterIterator aci = as.getIterator(); 
FontRenderContext   frc = g2.getFontRenderContext(); 
LineBreakMeasurer   lbm = new LineBreakMeasurer(aci , frc); 

TextLayout textLayout = lbm.nextLayout(wrappingWidth); 

int x = 50 , y = 50 ; 
textLayout.draw(g2 , x , y); 

} 

Thanx pour toute aide ou des conseils :)

Répondre

1

De toute évidence, la méthode la plus simple est sérialisation java, sinon vous devrez gérer tous les attributs de texte possibles. Si vous voulez un exemple, voici un générateur de rapports que j'ai écrit et qui utilise largement AttributedString. Espérons que cela aidera: http://www.perry.ch/mo/pureport.zip

0

Il n'y a pas de format de sérialisation de texte pour AttributedString, vous devez écrire le vôtre.

AttributedString/AttributedCharacterIterator est une ancienne API initialement introduite dans Java 1.2 et n'a jamais été «renforcée» pour fournir un bon modèle de texte stylé. Vous remarquerez par exemple qu'il manque quelques choses évidentes, comme une méthode 'length()', ou l'implémentation de Externalizable/Serializable. Vous pouvez itérer dessus en obtenant un attribut AttributedCharacterIterator pour cela, mais comme une sous-classe personnalisée de AttributedCharacterIterator.Attribute peut être présente, vous ne pouvez pas enregistrer de manière fiable tout sans sérialisation native.

Il est préférable d'utiliser simplement AttributedString comme format intermédiaire utilisé pour dialoguer avec les API InputMethod ou TextLayout, et stocker votre texte stylisé d'une autre manière.

Questions connexes