Bonjour,
J'ai un JTextPane que j'initialise comme cela
Plus tard, dans mon code, je modifie la couleur de fond d'une partie du texte comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 this.txtPane.setContentType("text/html"); this.txtPane.setFont(new Font("Arial", Font.PLAIN, 14)); this.doc = new MyHTMLDocument(); this.txtPane.setDocument(this.doc); this.editorKit = (StyledEditorKit)this.txtPane.getEditorKit(); this.undo = new UndoManager(); this.doc.addUndoableEditListener(new UndoableEditListener() { @Override public void undoableEditHappened(UndoableEditEvent e) { undo.addEdit(e.getEdit()); } });
et plus tard, je vais sauvegarder le contenu HTML dans un petit fichier. J'ai essayé de le faire faire à l'EditorKit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 if(sActName.startsWith(BTN_COLOR_BG_ACTION)) { Color c = null; if(BTN_COLOR_BG_BLUE_ACTION.equals(sActName)) c = Color.BLUE; else if(BTN_COLOR_BG_GREEN_ACTION.equals(sActName)) c = Color.GREEN; else if(BTN_COLOR_BG_RED_ACTION.equals(sActName)) c = Color.RED; else if(BTN_COLOR_BG_WHITE_ACTION.equals(sActName)) c = Color.WHITE; else if(BTN_COLOR_BG_YELLOW_ACTION.equals(sActName)) c = Color.YELLOW; cAttr = new SimpleAttributeSet(); StyleConstants.setBackground(cAttr, c); return; } this.doc.setCharacterAttributes(iSelStart, iSelLength, cAttr, false); this.editorKit.getInputAttributes().addAttributes(cAttr);
ou avec le this.txtPane.getText()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 writer = new FileOutputStream(sFile); Document doc = (Document)this.txtPane.getDocument(); EditorKit kit = this.txtPane.getEditorKit(); kit.write(writer, doc, doc.getStartPosition().getOffset(), doc.getLength()); writer.flush();
Et dans aucun des cas, ca n'enregistre la coloration de fond du texte :'( pourtant ca le gère bien à l'affichage ... je n'y comprend rien :'(
Une idée ?
Merci
Partager