扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月30日
关键字:
在本页阅读全文(共3页)
五、 发送电子邮件
如果支持该行为的话,该应用程序能够启动主机的默认电子邮件客户端-通过调用这个Desktop实例方法:
public void mail(URI uri) throws IOException DesktopDemo为"Launch Mail"按钮提供了一个ActionListener。在这种情况中,该听取器调用下列方法: private void onLaunchMail(java.awt.event.ActionEvent evt) { String mailTo = txtMailTo.getText(); URI uriMailTo = null; try { if (mailTo.length() > 0) { uriMailTo = new URI("mailto", mailTo, null); desktop.mail(uriMailTo); } else { desktop.mail(); } } catch(IOException ioe) { ioe.printStackTrace(); } catch(URISyntaxException use) { use.printStackTrace(); } ... } |
该onLaunchMail()方法从相关的文本域中检索电子邮件接收者,并且在存在一位接收者时使用一种mailto模式的参数创建URI,然后调用mail()方法。这个mail()方法被重载,这样你可以使用(或不使用)一个描述其mailto接收者的URI(见图6)来调用这个方法。
![]() 图6:使用一个电子邮件接收者启动默认电子邮件客户端。 |
当创建这个URI时,你可以使用多个电子邮件接收者。这个mailto模式支持CC,BCC,SUBJECT和BODY域。例如,可以使用下列文本来创建一个mailto URI:
mailto:duke@sun.com?SUBJECT=Happy New Year!&BODY=Happy New Year, Duke!
图7显示出相应的结果。
![]() 图7:桌面API使用多个mailto参数启动默认电子邮件客户端。 |
当然,你也可以不使用参数来调用mail()。在这种情况中,你的电子邮件客户端将启动一个新的没有指定接收者、主题或邮件正文的电子邮件窗口。
六、 打开、编辑和打印文件
Java应用程序可以分别使用一个Desktop对象的open(),edit()和print()方法来从与其相联系的应用程序中打开,编辑和打印文件(见图8)。同样,仅在该Desktop实例支持它们时,DesktopDemo才允许这些行为,因此在本应用程序环境下,不必再次进行这种支持检查。
![]() 图8:启动与一特定的文件类型相联系的应用程序。 |
DesktopDemo中的每一个单选按钮也都有它自己的ActionListener。在这种情况中,每一个单选按钮都设置一个实例变量,以便描述最近选择的按钮的相关联Desktop.Action:
Desktop.Action action; private void onPrintAction(java.awt.event.ActionEvent evt) { action = Desktop.Action.PRINT; } private void onEditAction(java.awt.event.ActionEvent evt) { action = Desktop.Action.EDIT; } private void onOpenAction(java.awt.event.ActionEvent evt) { action = Desktop.Action.OPEN; } |
当你按下"Launch Default Application"按钮时,它调用它自己的听取器-这将调用下列方法:
private void onLaunchDefaultApplication(java.awt.event.ActionEvent evt) { String fileName = txtFile.getText(); File file = new File(fileName); try { switch(action) { case OPEN: desktop.open(file); break; case EDIT: desktop.edit(file); break; case PRINT: desktop.print(file); break; } } catch (IOException ioe) { ioe.printStackTrace(); } ... } |
这个方法决定选择哪个Desktop.Action并且调用适当的Desktop实例方法-open(),edit()或print()。每个方法都需要一个File参数-它被用于执行要求的行为。
有趣的是,不同的应用程序可以针对甚至相同的文件类型上的这些不同的行为进行注册。例如,可以使用OPEN行为启动Firefox浏览器,使用EDIT行为启动Emacs,甚至使用PRINT行为启动另外不同的应用程序。你的主机桌面的关联用来决定应该调用什么样的应用程序。
注意 使用Mustang中现有桌面API来操作桌面文件关联是不可能的,而且目前只能使用平台依赖的工具来创建或改变这些关联。
七、 总结
桌面集成是Mustang的一个重要主题。Mustang支持这种主题的一种方式是提供一组java.awt.Desktop API。这种API允许Java应用程序启动主机的默认浏览器和电子邮件客户端。另外,Java应用程序能够启动与特定的文件类型相关联的应用程序以打开,编辑和打印文件。尽管Java应用程序不能操作,创建,或改变文件关联,但是这些桌面API确定允许Java应用程序启动默认的相关联的应用程序。
濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹