可点击的电子邮件地址作为java中的JLabel



对于我的应用程序的"关于"对话框,我有一个JLabel,我使用html标签定义如下:

JLabel myEmail = new JLabel(
"<html><br><font size=2><a href=mailto:abc.pqr@xyz.com>abc.pqr@xyz.com</a>" +
"</font></html>");`

我希望在单击此JLabel时,打开默认的电子邮件客户端(如Outlook),其中To字段填充为abc.pqr@xyz.comsubject填充为预定义文本(如Hi!)。

如何做到这一点?

这里有一个关于如何做到这一点的片段:

String address = "abc.pqr@xyz.com"; // global
JLabel label = new JLabel("<html><br><font size=2><a href=#>" + address + "</a></font></html>");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().mail(new URI("mailto:" + address + "?subject=Hello"));
} catch (URISyntaxException | IOException ex) {
// ...
}
}
});

出于演示目的,address变量在这里是全局的,但您应该使用一个具体的MouseAdapter子类来传递相关的电子邮件地址。最好避免试图解析HTML。

不幸的是,JLabel中的HTML链接默认情况下是不可"点击"的。请参阅本主题:如何在JLabel中添加超链接。它包含了您可能需要了解的有关此主题的所有信息。

或者,如果您不介意使用额外的库,您可以考虑使用SwingX项目中的JXHyperLink

相关内容

  • 没有找到相关文章

最新更新