Стилизация HTML в JEditorPane или JTextPane - PullRequest
3 голосов
/ 23 марта 2010

Я хочу отобразить HTML в JEditorPane или JTextPane, но я хочу, чтобы стиль (размер шрифта) исходил из Look and Feel. Есть ли способ сделать это, или вам нужно использовать встроенный стиль HTML?

Вот пример:

epText = new JEditorPane("text/html", content);

StyleSheet ss = ((HTMLEditorKit)epText.getEditorKit()).getStyleSheet();
ss.addRule("p {font-size:" + FontManager.getManager().getFontSize() + "}");
HTMLEditorKit kit = (HTMLEditorKit) epText.getEditorKit();
kit.setStyleSheet(ss);

epText.setEditorKit(kit);

Всякий раз, когда я устанавливаю комплект редактора, весь текст исчезает. Нужно ли устанавливать текст каждый раз?

Ответы [ 2 ]

3 голосов
/ 23 марта 2010

Да.

Копайте этот фрагмент из API Java для HTMLEditorKit :

Настройка из текущего LAF

HTML предоставляет хорошо известный набор функций без точного указания характеристики дисплея. Свинг имеет тематический механизм для его Реалистичные реализации. это желательно для внешнего вида характеристики дисплея подачи в HTML просмотров. Пользователь с плохим зрением например хотел бы высокий контраст и больше, чем типичные шрифты.

Поддержка для этого обеспечивается классом StyleSheet. представление HTML может быть сильно зависит от настройки свойство StyleSheet в EditorKit.

Редактировать: при установке комплекта редактора он удаляет старый комплект и устанавливает новый. Это меняет основную модель, поэтому текст «исчезает». Для получения дополнительной информации прочитайте API .

Но вам может не понадобиться заново создавать весь комплект ... просто добавьте новый лист в свой стиль.

0 голосов
/ 23 марта 2010

Вызовите это из метода main после установки L & F.

public static void setDefaultStyle()
{
    // looks like WTF but that is the way to set default CSS
    StyleSheet sheet=new HTMLEditorKit().getStyleSheet();
    // add your rules
    sheet.addRule("...");
    sheet.addRule("...");
}

РЕДАКТИРОВАТЬ: По крайней мере это должно работать для JTextPane.

...