JTextPane - Bullet z listą HTMLEditorKit nie renderuje poprawnie, chyba że wykonam setText (getText ()) i odmaluję

Mam:

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

Następnie próbuję dodać przycisk listy nieuporządkowanej do paska narzędzi w taki sposób, że akcja:

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

I to zawiera właściwy kod, jeśli zrobię zrzut wygenerowanego kodu HTML. Jednak zostanie to zrealizowane bardzo źle, ponieważ nie jest nawet zbliżone do rozsądnego, jak pokazano poniżej:

Jeśli jednak to zrobię:

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

Wtedy wszystko jest w porządku.Ale jeśli nie zrobię OBU linii, to żadna z nich nie będzie działać sama. Mogę również sprawić, by działał, ustawiając tekst przed wyświetleniem jtextPane.

To jest naprawdę dziwne i nie rozumiem, dlaczego musiałbym zrobićsetText(getText()) po którym następuje arepaint().

PS: To bardzo podobne do tego pytania:Jak zaimplementować punktory w JTextPane? I działa, z wyjątkiem tego, że nie jest poprawnie renderowany. Nie wiem, czy ma to związek z HTMLEditorKit vs RTFEditorKit, ale coś, co powoduje, że renderowanie nie powiedzie się. Podany kod źródłowy HTML jest idealny ...

PS2:Ten link jest również bardzo przydatny ale to też nie pokazało rozwiązania.

Aktualizacja: Oto pełny kod na żądanie, ale niewiele więcej ...

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);
}

questionAnswers(2)

yourAnswerToTheQuestion