Cloner un objet Document [résolu : pas possible] - Java - Programmation
Marsh Posté le 10-08-2005 à 03:44:07
Bonjour,
Je n'ai quasiment jamais manié de Document de ma vie, donc vais probablement dire une grosse bêtise. myDefaultStyledDocument.clone() ne répond pas à ton besoin ?
Nicolas
Marsh Posté le 10-08-2005 à 12:04:19
Nicolas_75 a écrit : Bonjour, |
Tu veux dire dériver la classe DefaultStyledDocument et implementer cloneable ? Parce que malheureusmeent pas de méthode clone pour la classe DefaultStyledDocument... Et j'aurais voulu éviter de me créer ma propre classe ou quoi, ça doit bien être possible de base...
Marsh Posté le 10-08-2005 à 12:10:02
Le "my" de "myDefaultStyledDocument" voulait indiquer une instance de la classe.
Je parle bien de la classe DefaultStyledDocument de l'API : elle a une méthode clone() comme toute classe héritant de Object, non ?
Marsh Posté le 10-08-2005 à 12:23:57
You cannot in general. Only some of the attributes of a StyledDocument
can be set from the outside (logicalStyle, paragraphAttributes, charac-
ter attributes), and you can also not really duplicate the element
structure (only assume that "\n" will create new paragraph elements
and this are split into character elements). Only the text can be
definitely copied.
http://groups-beta.google.com/grou [...] c7a26ecd95
You are talking about StyledDocument, but that is an interface only.
Which class are you really using? But anyhow, AFAIR
DefaultStyledDocument and HTMLDocument don't support any convenient way
of deep-cloning (copying) them. The simplest but slightly inefficient
way might be to serialize/deserialize them to get a clone.
A better idea might be to register a document listener in order to be
informed about chnges.
http://groups-beta.google.com/grou [...] fd8dd84123
Marsh Posté le 10-08-2005 à 12:29:48
Nicolas_75 a écrit : Le "my" de "myDefaultStyledDocument" voulait indiquer une instance de la classe. |
J'avais jamais fait gaffe mais la méthode clone d'objet est déclarée protected...
push a écrit : You cannot in general. Only some of the attributes of a StyledDocument |
Merci beaucoup... J'avais cherché sur google mais sans résultat... Bon ben je suis pas le seul à faire ma méthode pourrie alors, je vais m'en contenter !
Merci à tous les deux !
Marsh Posté le 09-08-2005 à 17:54:07
Bonjour,
Après recherche, je n'ai pas trouvé de solution au problème suivant :
J'ai un JTextPane avec du contentType RTF. Je veux le "compiler" de telle sorte qu'avec un contenu comme celui ci :
bla function(arg) bla
il me sorte un fichier RTF en remplaçant "function(arg)" par la valeur de la fonction.
Jusque là pas de problème, je fais des remove et insert sur le document, et je le sors avec RTFEditorKit.write(). Le problème étant que je veux pas que ça modifie le document du JTextPane (j'ai besoin qu'il garde le contenu non compilé).
L'idée est donc tout simplement de créer un nouveau DefaultStyledDocument contenant la même chose que le document du TextPane avant la "compilation", de faire les modifs dessus et de le sortir lui.
Problème : je n'ai trouvé nulle part comment cloner un document, ou en remplir un nouveau avec le contenu de l'ancien (en gardant le style bien sûr, sinon suffirait de faire un insertString(getText()) ).
Donc pour le moment, infâme bricolage, pour cloner un doc1, je sors son contenu avec RTFEditorKit.write(), et je le charge dans le doc2 avec RTFEditorKit.read()...
Peut être que je ne prend pas le problème dans le bon sens, je découvre ces concepts de Document etc... Ce qui fait que la solution est ptet dans la doc que j'ai épluché des heures, y'a pas mal de concepts qui m'échappent dedans.
Voilà je sais pas si je me suis bien expliqué, en tout cas si quelqu'un sait comment faire ça m'aiderait bien pour améliorer le code ! Merci d'avance !
Message édité par Luigi le 10-08-2005 à 12:30:21