JTextPane - Пуля со списком HTMLEditorKit не отображается правильно, если я не делаю setText (getText ()) и перекрашиваю
Я имею:
JTextPane jtextPane = new JTextPane();
jtextPane.setEditorKit(new HTMLEditorKit());
...
Затем позже я пытаюсь добавить неупорядоченную кнопку списка на панель инструментов так, чтобы действие было:
Action insertBulletAction =
HTMLEditorKit.InsertHTMLTextAction ("Bullets", " ",
HTML.Tag.P, HTML.Tag.UL);
JButton insertBulletJButton = new JButton(insertBulletAction);
И это включает в себя правильный код, если я возьму дамп HTML, которыйсгенерировано. Однако он будет отображаться очень плохо, так как даже близко не к разумному, как показано ниже:
Однако если я сделаю:
jtextPane.setText(jtextPane.getText());
jtextPane.repaint();
Тогда все хорошо.Но если я неДелайте обе линии, тогда ни одна не будет работать в одиночку. Я также могу заставить это работать, устанавливая текст прежде, чем я сделаю jtextPane видимым.
Это действительно странно, и я нене понимаю, почему яя должен сделатьsetText(getText())
с последующим.repaint()
PS: это очень похоже на этот вопрос:Как реализовать маркеры в JTextPane? И это работает, за исключением того, что этоне рендерится правильно. Я неНе знаю, имеет ли это отношение к HTMLEditorKit против RTFEditorKit, но что-то я вызываю сбой рендеринга. Исходный код HTML под отлично ...
PS2:Эта ссылка также очень удобна но это также непоказать решение.
Обновление: здесь полный код в соответствии с запросом, но нетмного чего еще ...
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",
" ", 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);
}