отображение ссылок в java JTextPane без html

Мне нужно взять текст из источника как обычный текст и отобразить его в JTextPane или JEditorPane. Исходный текст не является HTML, но будет содержать URL-адреса в квадратных скобках, которые должны отображаться и функционировать как гиперссылки.

Я подумал о том, чтобы установить тип содержимого панели на text / html и окружить URL-адрес в тегах html, но в итоге игнорируются символы новой строки, что плохо, и я не уверен, как заменить символы новой строки на " <br/> ". Есть ли простой способ это сделать?

Если это означает сканирование всей строки, не лучше ли просто настроить способ отображения текста?

Так что я также рассмотрел путь, который включает создание моего собственного EditorKit, например упоминания starturtle в эта ветка, но он не объясняет, как это сделать. Я просмотрел код в этой статье, но, похоже, много работы, это тот путь, по которому я должен идти?

Кто-нибудь когда-нибудь делал это. Какие-нибудь рекомендации? Лучше конвертировать в html или настроить отображение?


person Victor    schedule 29.07.2009    source источник


Ответы (1)


Я не уверен, как заменить символы новой строки на «‹br/›». Есть ли простой способ это сделать?

Вы можете сделать это с помощью регулярного выражения Java:

    String raw = "...";
    Pattern p = Pattern.compile("\n");
    String html = "<HTML>" + p.matcher(raw).replaceAll("<BR>") + "</HTML>" ;

Я взял на себя смелость добавить для вас вашу HTML-оболочку.


изменить:

Ради удовольствия, я взял точку Оскара и нанес удар:

    Pattern p = Pattern.compile("\\[([^\\]]*)\\]");
    raw = p.matcher(raw).replaceAll("<a href=\"$1\">$1</a>");
person akf    schedule 29.07.2009
comment
+1 @Victor: Это правильно. Обработка гиперссылок должна быть очень похожей: замените [] на ‹a href = etc и т. Д. Вы все равно должны обработать ввод! - person OscarRyz; 29.07.2009
comment
Я пробовал метод замены строки, но он не работал. это работает, спасибо. - person Victor; 29.07.2009