复制 DefaultStyledDocument
StyledDocuments
通常不实现克隆,因此如果有必要,必须以不同的方式复制它们。
try {
//Initialization
DefaultStyledDocument sourceDoc = new DefaultStyledDocument();
DefaultStyledDocument destDoc = new DefaultStyledDocument();
MutableAttributeSet bold = new SimpleAttributeSet();
StyleConstants.setBold(bold, true);
MutableAttributeSet italic = new SimpleAttributeSet();
StyleConstants.setItalic(italic, true);
sourceDoc.insertString(0, "Some bold text. ", bold);
sourceDoc.insertString(sourceDoc.getLength(), "Some italic text", italic);
//This does the actual copying
String text = sourceDoc.getText(0, sourceDoc.getLength()); //This copies text, but loses formatting.
for (int i = 0; i < text.length(); i++) {
Element e = destDoc.getCharacterElement(i); //A Elment describes a particular part of a document, in this case a character
AttributeSet attr = e.getAttributes(); //Gets the attributes for the character
destDoc.insertString(destDoc.getLength(), text.substring(i, i+1), attr); //Gets the single character and sets its attributes from the element
}
} catch (BadLocationException ex) {
//handle error
}