Как добавить строки в текстовую область, которая содержит ссылки mailto в java? - PullRequest
3 голосов
/ 16 февраля 2012

Мне нужно добавить строки в текстовую область в разгаре, которая содержит ссылки mailto, и при нажатии на нее откроется приложение электронной почты.

Как я могу это сделать?

1 Ответ

6 голосов
/ 16 февраля 2012

Как я уже говорил в моем комментарии Вы должны попробовать JTextPane вместо JTextArea .

Для того, чтобы гиперссылка работала, вам необходимо выполнить следующие действия:

  • сделать textPane editable = false.
  • добавить к нему HyperlinkListener, чтобы вы могли отслеживать событие активации ссылки.

Краткая демонстрация выглядит следующим образом:

    final JTextPane textPane = new JTextPane();
    textPane.setEditable(false);
    textPane.setContentType("text/html");
    textPane.setText("File not found please contact:<a href='mailto:michael@uml.com'>e-mail to</a> or call 9639");
    textPane.addHyperlinkListener(new HyperlinkListener() {
        @Override
        public void hyperlinkUpdate(HyperlinkEvent e) {
            if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                System.out.println(e.getURL());
                // write your logic here to process mailTo link.
            }
        }
    });

Пример открытия почтового клиента через Java:

try {
    Desktop.getDesktop().mail(new URI(e.getURL() + ""));
} catch (IOException e1) {
    e1.printStackTrace();
} catch (URISyntaxException e1) {
    e1.printStackTrace();
}
...