对于我的应用程序的"关于"对话框,我有一个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.com
,subject
填充为预定义文本(如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