Стилизация текста в JTextArea или JTextPane - PullRequest
14 голосов
/ 04 февраля 2012

По сути, у меня есть JTextPane для хранения текста, который я хочу стилизовать. JTextArea было бы лучше для меня, но мне сказали, что вы не можете оформить текст в них?

Однако JTextPane, кажется, не работает должным образом. Например, следующий код только что возвращается с включенным HTML:

public static void main(String[] args) {
    JFrame j = new JFrame("Hello!");
    j.setSize(200,200);
    JTextPane k = new JTextPane();
    k.setText("<html><strong>Hey!</strong></html>");
    j.add(k);
    j.setVisible(true);
}

Я хочу иметь возможность просто стилизовать некоторый текст в JTextPane, когда пользователь взаимодействует с интерфейсом, но пока он просто возвращает строку с HTML-кодом, который все еще находится в! Помогите!

Ответы [ 3 ]

21 голосов
/ 04 февраля 2012

Если вы хотите воспроизвести содержимое Html в JTextPane , вам нужно установить значение JTextPane # setContentType ("text / html"); , пример здесь

EDIT:

для JEditorPanes / JTextPanes есть ли другой способ реализации StyledDocument , MutableAttributeSet и с настроенными Highlighte r, пример здесь

a.m. путь без использования Html syntax

6 голосов
/ 04 февраля 2012

Сообщите Java, что это будет HTML, используя setContentType метод.

k.setContentType("text/html"); 
3 голосов
/ 17 мая 2015

Я использую Look and Feel (Substance), и при вызове setContentType("text/html") возникают проблемы с отображаемым шрифтом.Я решил это, вызвав:

textPane.putClientProperty(JTextPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);

Другой вариант - это обтекание текста HTML в JLabel.Следуя вашему примеру, код:

JTextPane k = new JTextPane();
k.insertComponent(new JLabel("<html><strong>Hey!</strong></html>"));
...