1

对于我的应用程序的“关于”对话框,我有一个使用 html 标记定义的 JLabel,如下所示:

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!)的字段。

怎么做?

4

3 回答 3

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。

于 2012-09-16T19:04:10.983 回答
1

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

于 2012-09-16T18:51:58.023 回答
1

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

于 2012-09-16T19:30:26.647 回答