Стилизация текста в 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-кодом! Помогите!
Ответы
Ответ 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>"));