CSS Swing атрибут стиля CSS "класс" использовать в HTMLEditorKit/HTMLDocument

Моя проблема заключается в следующем:

Я пытаюсь добавить функциональность в редактор HTML, который реализован в Java Swing с использованием классов HTMLEditorKit и HTMLDocument. Идея состоит в том, чтобы обеспечить возможность переключения между различными стилями при редактировании текста в редакторе HTML. Различные стили определяют цвета фона / переднего плана, шрифты и тому подобное.

Мне уже удалось загрузить файл таблицы стилей программно. Код для этого выглядит следующим образом:

class HtmlEditor extends JFrame implements Keylistener, MouseListener {

private HTMLDocument  m_doc;

private HTMLEditorKit m_kit;

[...]


public HtmlEditor(...) {

    [...]
    final URL formats = HtmlEditor.class.getResource("/formats.css");
predefStyles = new StyleSheet();
predefStyles.importStyleSheet(formats);
m_kit.getStyleSheet().addStyleSheet(predefStyles);

    [...]
}

Файл таблицы стилей выглядит следующим образом:

.style1 { background-color:silver }
.style2 { background-color:aqua }
.style3 { background-color:teal }

С этой таблицей стилей, добавленной в таблицу стилей экземпляра HTMLEditorKit, я уже могу использовать стили при вставке содержимого в редактор HTML с помощью редактора исходного кода (в редакторе исходного кода можно напрямую вставить HTML-код, например, "Styled текст"). Чтобы разрешить использование стилей в части WYSIWYG, я добавил JComboBox на панель инструментов редактора, которая отображает имена стилей из "format.css" (ведущий "." Из имен стилей удален). В ActionListener JComboBox я сейчас пытаюсь установить атрибут "класс". Мой код выглядит следующим образом:

    cbStyles = new JComboBox<String>(getStyleNames());
    cbStyles.setToolTipText("Select Style");
    cbStyles.setMaximumSize(null);
    cbStyles.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            currStyle = cbStyles.getSelectedItem().toString();

            final SimpleAttributeSet attr = new SimpleAttributeSet();
            attr.addAttribute(HTML.Attribute.CLASS, currStyle);
            m_kit.getInputAttributes().addAttributes(attr);
            m_editor.requestFocusInWindow();
        }
    });
    m_toolBar.add(cbStyles);

К сожалению, это не похоже на работу. По крайней мере, после изменения стиля я не применяю его к вводимому впоследствии тексту, и в исходном представлении атрибут "class" не появляется в содержащем HTML-компоненте. Я проверил код в классе HtmlEditor, который управляет настройкой другого шрифта, чтобы выяснить, могу ли я использовать ту же технику, которая используется для изменения шрифта и для моей цели. Соответствующий слушатель действия, прикрепленный к JComboBox, который обеспечивает выбор шрифта, выглядит следующим образом:

        cbFonts.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            m_fontName = m_cbFonts.getSelectedItem().toString();
            final MutableAttributeSet attr = new SimpleAttributeSet();
            StyleConstants.setFontFamily(attr, m_fontName);
            m_kit.getInputAttributes().addAttributes(attr);
            m_editor.requestFocusInWindow();
        }
    });

Как мы видим здесь, класс StyleConstants используется для установки атрибута нового шрифта. Что меня озадачивает, так это то, что класс StyleConstants, по-видимому, не обеспечивает метод для установки атрибута "класс". Как видно из его Javadoc, существует множество методов для установки таких атрибутов, как выравнивание, семейство шрифтов, полужирность и т. Д. Возможно, мой подход неверен довольно простым способом. Может быть, я еще не совсем понял концепции использования CSS в HTMLDocument. Любая помощь будет оценена!

Из моего понимания в HTML CSS можно использовать следующим образом:

Элемент