Непоследовательная производительность применения ForegroundActions в JEditorPane при чтении HTML

Я строю редактор HTML, используяJEditorPane, но я получаю некоторые противоречивые проблемы с производительностью с Foreground Actions. У меня есть упрощенная версия моего редактора, которая имеет три действия: изменить цвет шрифта на красный или синий или изменить размер шрифта. Теперь с помощью следующего файла testFile.html:

<html>
  <head><title>Title</title></head>
  <body link="#0000FF" bgcolor="white">
    <font size="4" face="arial" color="black">Some test text</font>
    <font size="3" face="arial" color="black">Some new test text </font>
  </body>
</html>

иногда я могу выделить какой-то текст в редакторе и нажать красные или синие цветные кнопки, и он работает нормально, то есть меняет цвет. В других случаях (т. Е. Если я закрою свою JVM и снова включу ее), цвет не изменится, пока я не применюStyledEditorKit.FontSizeAction на том же тексте.

Что-то не хватает в том, как я применяюForegroundActions? Или это может быть какая-то ошибка Java?

Код ниже:

public class EditorTest extends JFrame{

private JEditorPane editorPane;
    public EditorTest() 
    {
    editorPane = new JEditorPane();     
    editorPane.setContentType("text/HTML");        
    getContentPane().add(editorPane, BorderLayout.CENTER);
    editorPane.setEditorKit(new HTMLEditorKit());


    Action a = new StyledEditorKit.ForegroundAction("RedColor", Color.RED);        
    editorPane.getActionMap().put("RedColor", a);

    JToolBar bar = new JToolBar();

    JButton button = new JButton("blue");
    button.addActionListener(new StyledEditorKit.ForegroundAction (
                        "set-foreground-red", Color.blue));


    bar.add(editorPane.getActionMap().get("font-size-12")).setText("12");
    bar.add(button);
    bar.add(editorPane.getActionMap().get("RedColor")).setText("Red");

    getContentPane().add(bar, BorderLayout.NORTH);
    setSize(650,600);
    setVisible(true);

    File file = new File("testFile.html");
    FileReader reader = null;
    try
    {
        reader = new FileReader(file);
        editorPane.read(reader, null);
    }
    catch (IOException ex){}      
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос