I'm noticing that when there's an empty line on an HTML JEditorPane, all previously set styling will go away. For example, see the code sample below:
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.text.AttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.html.HTMLEditorKit;
public class BlankLineTester {
private JEditorPane jep;
public BlankLineTester() {
String html = "<html><head></head><body>" +
"<p><b>Line 1</b></p>" +
"<p><b></b></p>" +
"<p><b>Line 3</b></p>" +
"</body></html>";
jep = new JEditorPane();
jep.setContentType("text/html");
jep.setText(html);
JFrame frame = new JFrame("Blank Line Test");
frame.getContentPane().add(jep);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("Line 3 is " + isInputAttributeBold());
jep.getCaret().setDot(8);
System.out.println("Line 2 is " + isInputAttributeBold());
}
private boolean isInputAttributeBold() {
AttributeSet attSet = ((HTMLEditorKit)jep.getEditorKit()).getInputAttributes();
return StyleConstants.isBold(attSet);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new BlankLineTester();
}
});
}
}
Line 2 is initially set as a bold empty line, but after parsing, doesn't seem to retain the bold attribute. Also notice that if you run this yourself, put your cursor on line 3, and delete everything on the line, the next characters you type will NOT be bold. I imagine that the leaf elements in the HTMLDocument tree are being eliminated when the text they represent is gone, but this starts to seem like buggy behavior when a user runs it.
Does anybody have any ideas how to get the styling attributes to both parse on empty lines, and be retained when everything on a styled line is deleted?
Thanks! --Andy