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

时间:2012-09-16 18:47:10

标签: java swing email jlabel clickable

对于我的应用程序的“关于”对话框, 我有一个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!)。

怎么做?

3 个答案:

答案 0 :(得分:3)

以下是有关如何执行此操作的摘录:

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。

答案 1 :(得分:1)

不幸的是,JLabel中的HTML链接默认情况下不是“可点击”的。请参阅此主题:How to add hyperlink in JLabel。它包含您可能需要了解的有关此主题的所有内容。

答案 2 :(得分:1)

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