précédent | suivant | table des matières

Document

Sommaire
  1. PlainDocument.
  2. DefaultStyledDocument
  3. HTMLDocument
Hiérarchie des classes implémentant l'interface Document
exemple de structure d'un document structuré

Un Document est un conteneur qui contient du texte, et sert de modèle aux composants swing permettant d'éditer du texte.

Texte plat : Le texte est une séquence de caractères unicode, dont le premier caractère est à l'indice 0. Les méthodes suivantes permettent d'obtenir tout ou partie du texte :


int getLenth() Retourne la Longueur (nombre de caractères) du texte.
String getText(int d, int l) Retourne le texte entre à partir de d, et de longueur l.
void getText(int d, int l, Segment s) ...

Texte structuré :  Le texte a une structure, par exemple, un livre composé de chapîtres, eux même composés de paragraphes, etc... L'unité de base de la structure est un Element, qui a un ensemble d'attributs. Les éléments sont de natures différentes suivant qu'on a affaire un texte HTML : html, body, p, content, etc... ou à un texte RTF : section, paragraph, content, etc...

Les méthodes suivantes permettent d'accéder aux éléments d'un document : 

Element getDefaulRootElement()
Retourne l'élément racine.
Element[] getRootElements()
Retourne les éléments qui dépendent de la racine.

Le parcours de la structure peut se faire de la façon suivante :

void parcours( Element e ) {
   for (int i = 0; i < e.getElementCount(); ++i) {  
       parcours(e.getElement(i));  
   }
}

Avec un appel initial :

for (int i = 0; i < es.length; ++i)
      afficheElement(res[i]);

ou :

afficheElement(monDocRTF.getDefaultRootElement() );

Mutations : Dans un Document, on peut modifier le texte et ses attributs : police, couleur, alignement, etc... Les méthodes suivantes permettent de réaliser celà :

void insertString(int p, String s, AttributeSet as)
Insertion de la chaîne s, avec les attributs as à la position p dans le document.
void remove(int d, int l) 
Suppression du texte à partir de l'indice d, sur une longueur l.
Position createPosition(int p)
Création d'une position

On a accès aux attributs d'un élément de la façon suivante :

Element e = ...;
AttributeSet as = e.getAttributes();
Enumeration enu = as.getAttributeNames();
while(enu.hasMoreElements()){
      Object o = enu.nextElement();
      System.out.println(" " + o + "=" + as.getAttribute(o));
}

On peut modifier les attributs d'un texte, ou d'un paragraphe de la façon suivante :

String t = ...; // le texte de remplacement
int d = ...;    // à partir de d
int f = ...;    // jusqu'à f
SimpleAttributeSet as = new SimpleAttributeSet();
  StyleConstants.setFontFamily(as, "Courier");
  StyleConstants.setFontSize(as, 20);
  StyleConstants.setBackground(as, Color.YELLOW);
  StyleConstants.setForeground(as, Color.RED);
  StyleConstants.setAlignment(as, 1);
try { 
  // On remplace le texte, avec les nouveaux attributs 
  monDocRTF.replace(d, f-d, t, as); 
  // Les attributs du paragraphe englobant sont modifiés
  monDocRTF.setParagraphAttributes(d, f-d, as, true); 
} catch (BadLocationException e1) { 
...
}

1PlainDocument

Un document qui représente du texte sans structure.

2DefaultStyledDocument

Un document au format RTF.

3HTMLDocument

Un document au format HTML.


haut de la page