JTextPane - La viñeta con la lista HTMLEditorKit no se procesa correctamente a menos que lo haga setText (getText ()) y vuelva a pintar

Yo tengo:

JTextPane jtextPane = new JTextPane();
jtextPane.setEditorKit(new HTMLEditorKit());
...

Luego, más adelante, trato de agregar un botón de lista desordenada a la barra de herramientas para que la acción sea:

Action insertBulletAction = 
        HTMLEditorKit.InsertHTMLTextAction ("Bullets", "<ul><li> </li></ul>", 
                                            HTML.Tag.P, HTML.Tag.UL);
JButton insertBulletJButton = new JButton(insertBulletAction);

Y esto incluye el código adecuado si tomo un volcado del html que se genera. Sin embargo, se procesará muy mal, ya que ni siquiera es razonable, como se ilustra a continuación:

Sin embargo si lo hago:

jtextPane.setText(jtextPane.getText());
jtextPane.repaint();

Entonces todo está bien.Pero si no hago AMBAS líneas, tampoco funcionará solo. También puedo hacer que funcione configurando el texto antes de hacer visible el jtextPane.

Esto es realmente extraño y no entiendo por qué tendría que hacer unasetText(getText()) seguido de unrepaint().

PS: Esto es muy similar a esta pregunta:¿Cómo implementar puntos de bala en un JTextPane? Y funciona excepto que no se está procesando correctamente. No sé si tiene que ver con HTMLEditorKit vs RTFEditorKit, pero hay algo que hace que el renderizado falle. El código fuente de html bajo es perfecto ...

PS2:Este enlace también es muy útil. Pero tampoco mostró una solución.

Actualización: Aquí está el código completo según lo solicitado, pero no hay mucho más ...

public static void main(String[] args)
{
    JFrame jframe = new JFrame();
    jframe.setSize(800, 600);
    jframe.setVisible(true);

    JTextPane jtextPane = new JTextPane();
    jtextPane.setEditorKit(new HTMLEditorKit());

    Action insertBulletAction = new HTMLEditorKit.InsertHTMLTextAction ("Bullets", 
                                    "<ul><li> </li></ul>", HTML.Tag.P, HTML.Tag.UL);
    JButton insertBulletJButton = new JButton(insertBulletAction);
    insertBulletJButton.setRequestFocusEnabled(false);

    jframe.setLayout(new BorderLayout());
    jframe.add(new JScrollPane(jtextPane));
    jframe.add(insertBulletJButton, BorderLayout.SOUTH);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta