Ни JTextPane
, ни JTextField
не могут представить форматированный текст, т.е. текст, имеющий более одного формата.Для возможностей, подобных текстовому редактору, которые вы можете найти в WordPad или HTML, нужно использовать компонент JEditorPane
или его потомок, JTextPane
.
. Самое простое, что вы можете сделать, это установить ContentType.JEditorPane в «text / html» и просто установите его текст в строку, содержащую HTML.Компоненты структурированного текста на Java удивительно компетентны с HTML;Вы можете отображать таблицы и / или DIVs, и есть поддержка большей части CSS2.Проще всего сделать ваши стили встроенными, но вы даже можете использовать внешний стиль href
s.
Если вы хотите получить модные программно, вы можете получить доступ к DocumentModel
и создавать текст из участков текста, каждый из которых имеет своисобственное форматирование.DocumentModel по сути работает как программируемый текстовый редактор.
РЕДАКТИРОВАТЬ: Перечитывая ваш вопрос, я вижу, что мой ответ не совсем решает его.Поскольку вы хотите разноцветный текст, JEditorPane - ваш единственный вариант;но вместо того, чтобы просто транслировать предварительно окрашенный текст через HTML или что-то подобное, вам придется поместить слушателя в модель документа, чтобы отследить изменения, введенные при вводе текста;и после каждого изменения документа вы захотите проверить текст (снова из модели документа) на наличие текста, который должен или не должен быть выделен, и вы захотите применить форматирование к определенным сериям текста.
В деталях есть дьяволы, но с этого стоит начать.