Стилизация текста в 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-кодом! Помощь!


person mino    schedule 04.02.2012    source источник


Ответы (3)


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

РЕДАКТИРОВАТЬ:

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

до утра без использования Html syntax

person mKorbel    schedule 04.02.2012

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

k.setContentType("text/html"); 
person RanRag    schedule 04.02.2012

Я использую Look and Feel (вещество), и при вызове 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>"));
person IvanRF    schedule 17.05.2015
comment
Использование JTextArea часто лучше, чем использование JLabel, потому что JTextArea лучше прокручивается в JScrollPane и позволяет пользователю выбирать и копировать текст. Спасибо за информацию о Substance Look and Feel. Я также использую его, так что совет был полезен. - person Enwired; 25.08.2016