Как я могу показать пользовательскую строку, такую как [1234|alink]
, как ссылку с "alink" в виде текста и "1234" в качестве ее местоположения, не заменяя ее тегом <a>
?
Я имею в виду что-то вроде BBCode.
Отображение пользовательской строки в виде ссылки в JEditorPane
Ответы (1)
Тут я вижу несколько вариантов:
- Вы предварительно обрабатываете свои строки и конвертируете свои теги в эквивалентный HTML
Вы начинаете играть с парсерами/DTD/EditorKit а>.
а. Вы создаете свой собственный синтаксис (может занять много времени)
б. Вы повторно используете HTMLEditorKit ( вам нужно расширить его), попробуйте добавить больше информации в DTD по умолчанию, чтобы добавить свои пользовательские элементы (и, следовательно, сделать так, чтобы синтаксический анализатор возвращал ваши дополнительные элементы), и вы расширяете ViewFactory, чтобы вы могли отображать свои новые элементы с помощью выделенных представлений.
В то время как вариант 2 явно лучше в долгосрочной перспективе (особенно если вы действительно заинтересованы в высокой производительности), вариант 1 действительно легко реализовать.
См. эти ссылки для получения дополнительной информации:
- http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/DTD.html
- http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/ParserDelegator.html
- http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/DocumentParser.html