bah oui, mais c pour le boulot, alors je peux pas te passer le code!!
Bon, en gros, ça repose sur le même principe que du Swing : y'a une classe Document qui contient le texte, et dans lequel je fais les ajouts....C'est jamais qu'un vecteur (oui pasque java 1.1.5 oblige, pas d'arraylist et autres joyeusetés) qui contient des objets qui décrivent le texte et son format.
Ensuite, y'a une classe graphique, qui dessine le contenu du Document...En fait, elle dessine pas vraiment : elle recompose le document en fonction de ses propres attributs (taille, valeurs de scrolling, etc) pour que les différentes parties de texte soient bien rendues (retour à la ligne, etc, etc...) Popur obtenir les caractéristiques graphiques d'un bout de texte, la classe qui dessine demande à un renderer, qui lui sait dessiner le contenu du texte. (c'est lui qui va remplacer les codes de smiley par les images, nottament, et dire que la taille en pixels d'un smiley, c'est la taille de l'image, et pas la taille du texte, histoire que les lignes ne se recouvrent pas).
Donc, la classe graphique demande au renderer de lui recomposer un vecteur de données, reformaté selon la méthode de rendering, et les caractères de la zone graphique, puis, elle parcourt ce nouveau vecteur, et dessine les lignes que lui a préparé le renderer au bon endroit.....
Bon, je sais, ça a l'air un peu tordu comme ça, mais ça marche, et finalement, c'est assez portable et réutilisable : on peut facilement changer de renderer, ou de modèle de document.....
Après, par dessus, y'a d'autres trucs, comme la possibilité de cliquer sur certaines parties de texte, mais c'est assez simple : c'est des ajouts spéciaux dans le document, que la zone graphique traite de façon particulière : elle ajoute les coordeonnées du texte qui compose le lien dans une liste, et avec une bête gestion d'évènements de souris, hop, ça fait des liens.
Reste à implémenter le copier/coller, (bon, au moins le copier), et à réussir à animer plus de 6 images à la fois!!
Sinon, niveau implémentation, bah, la zone graphique, c'est un canvas, avec du dessin dessus, en double buffering.
Dans le même genre, j'ai fait une GTable, qui ressemble à la JTable : affichage d'images, de couleurs, de booléens, et edition des valeurs)
Faudra que je mette une démo en ligne,n un jour!!