Подтвердить что ты не робот

Стилизация текста в JTextArea или JTextPane

В принципе, у меня есть 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-кодом! Помогите!

4b9b3361

Ответ 1

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

EDIT:

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

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

Ответ 2

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

k.setContentType("text/html"); 

Ответ 3

Я использую 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>"));