服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java se 6.0 桌面api编程探讨

ad_qqread_mid_big">
  在调用任何这些行为之前,一个应用程序必须确定是否该desktop实例支持它们。这与确定是否一个desktop实例可用是有所不同的。这个desktop.isdesktopsupported()方法告诉你是否能够创建一个实例。一旦获得一个desktop对象,你就可以查询该对象来确定支持哪些特定类型的行为。如果该desktop对象不支持特定的行为,或如果该桌面api本身并不被支持,那么desktopdemo简单地停用那些受影响的图形组件。如图2所示,在停用状态下,不能使用这些组件来调用桌面特性。

java se 6.0 桌面api编程探讨(图二)
图2:当不支持桌面api时图形组件被停用。

  通过使用一个新的desktop实例,下列代码检查负责是否支持desktop.action并且启用适当的图形组件:

public desktopdemo() {
 ...
 //在使用更多的桌面api前,首先检查
 //是否这种api为该特定主机上的特别的虚拟机所支持。
 if (desktop.isdesktopsupported()) {
  desktop = desktop.getdesktop();
  // 现在,启用按钮以实现被支持的行为
  enablesupportedactions();
 }
 ...
}
/**
*启用在该主机上被支持的行为。
*这些行为有:打开浏览器,
*打开电子邮件客户端,和使用它们相关联的应用程序打开,编辑与打印文件。
*/
private void enablesupportedactions() {
 if (desktop.issupported(desktop.action.browse)) {
  txtbrowseruri.setenabled(true);
  btnlaunchbrowser.setenabled(true);
 }

 if (desktop.issupported(desktop.action.mail)) {
  txtmailto.setenabled(true);
  btnlaunchemail.setenabled(true);
 }
 if (desktop.issupported(desktop.action.open)) {
  rbopen.setenabled(true);
 }
 if (desktop.issupported(desktop.action.edit)) {
  rbedit.setenabled(true);
 }
 if (desktop.issupported(desktop.action.print)) {
  rbprint.setenabled(true);
 }

 if (rbedit.isenabled() || rbopen.isenabled() || rbprint.isenabled()) {
  txtfile.setenabled(true);
  btnlaunchapplication.setenabled(true);
 }
}

  一旦该应用程序确定了被支持的行为,它即启用适当的图形组件。如果所有的组件都被启用,那么相应的ui应该看上去如图3所示。

java se 6.0 桌面api编程探讨(图三)
图3:当支持桌面api时,启用组件。

  四、 打开浏览器

  调用下列实例方法将打开你的主机的默认浏览器:

public void browse(uri uri) throws ioexception

  因为仅当支持相关联的desktop.actiondesktopdemo时,ui组件才被启用,所以,在实际调用browse()方法之前,这个简单的演示应用程序不需要进行行为支持检查。然而,在每一种调用之前检查行为支持在实际中将增加程序的健壮性:

if (desktop.issupported(desktop.action.browse)) {
 //启动浏览器
 ...
}

  desktopdemo把一个java.awt.event.actionlistener添加到每一个按钮上。当被启用时,"launch browser"按钮通过它的actionlistener调用下列方法:

private void onlaunchbrowser(java.awt.event.actionevent evt) {
 uri uri = null;
 try {
  uri = new uri(txtbrowseruri.gettext());
  desktop.browse(uri);
 }
 catch(ioexception ioe) {
  ioe.printstacktrace();
 }
 catch(urisyntaxexception use) {
  use.printstacktrace();
 }
 ...
}

  这个browse()方法可能抛出各种类型的异常,这包括:当该uri为null时抛出一个nullpointerexception异常;如果不支持browse行为将抛出一个unsupportedoperationexception异常;如果不能发现或启动一个缺省的浏览器或应用程序则抛出一个ioexception异常;如果一个安全管理器否定一次调用则抛出一个securityexception异常。

  然而,如果一切顺利,那么听取器(listener)将从图4中相联系的文本域中检索文本,创建一个uri并且调用browse()方法。上面的代码将启动你的系统的默认浏览器并且指示该浏览器装载该uri,如图5所示。

java se 6.0 桌面api编程探讨(图四)
图4:使用一个特定uri启动默认浏览器。
java se 6.0 桌面api编程探讨(图五)
图5:使用桌面api启动默认浏览器。
>>>更多专题请看java api  java的类  java网络专题
上一页 1 2 3 下一页 
相关内容:邮件  虚拟机  操作系统  solaris  opera  
【收藏此页】【大 中 小】【打印】【关闭】
上一篇:java中properties类的使用
下一篇:struts的巨大烦恼 真的不适合大系统?


10万个软件免费高速下载
教育教学 安全相关 游戏娱乐 源码下载 编程开发 数码软件 其它类别
网络软件 联络聊天 系统工具 媒体工具 图形图像 应用软件 行业软件
·安装实战:freebsd6.1桌面安装指南
·右键发送到"桌面快捷方式"
·庆“六一” 宝宝照片做电脑桌面壁纸
·让迷失的桌面图标回“家”
·用dde创建桌面快捷方式
·玩转桌面个性:壁纸特效也疯狂
·书之精灵:起点小说桌面看
·“我要地图”桌面版电子地图试用手记
·不再一成不变 让xp“主题”在桌面绽
·用自己的照片做漂亮个性的电脑桌面
 
·接口和抽象类的定义方式举例说明
·用maven制作java项目发行包
·java 基础入门 pom.xml 元素描述
·用jbuilder2007开发扩展jsf标签的插
·抽象类对象类和对象包装类
·使用java实现在文件中添加字符串
·instanceof和回调概念
·java变量的赋值与传递
·java se6调用java编译器的两种新方法
·weblogic运用db的java控件访问数据库
ad_qqread_mid_big">
五、 发送电子邮件

  如果支持该行为的话,该应用程序能够启动主机的默认电子邮件客户端-通过调用这个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)来调用这个方法。

java se 6.0 桌面api编程探讨(图六)
图6:使用一个电子邮件接收者启动默认电子邮件客户端。

  当创建这个uri时,你可以使用多个电子邮件接收者。这个mailto模式支持cc,bcc,subject和body域。例如,可以使用下列文本来创建一个mailto uri:

mailto:duke@sun.com?subject=happy new year!&body=happy new year, duke!

  图7显示出相应的结果。

java se 6.0 桌面api编程探讨(图七)
图7:桌面api使用多个mailto参数启动默认电子邮件客户端。

  当然,你也可以不使用参数来调用mail()。在这种情况中,你的电子邮件客户端将启动一个新的没有指定接收者、主题或邮件正文的电子邮件窗口。

  六、 打开、编辑和打印文件

  java应用程序可以分别使用一个desktop对象的open(),edit()和print()方法来从与其相联系的应用程序中打开,编辑和打印文件(见图8)。同样,仅在该desktop实例支持它们时,desktopdemo才允许这些行为,因此在本应用程序环境下,不必再次进行这种支持检查。

java se 6.0 桌面api编程探讨(图八)
图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应用程序启动默认的相关联的应用程序。 >>>更多专题请看java api  java的类  java网络专题
上一页 1 2 3 
相关内容:邮件  虚拟机  操作系统  solaris  opera  
【收藏此页】【大 中 小】【打印】【关闭】
上一篇:java中properties类的使用
下一篇:struts的巨大烦恼 真的不适合大系统?


10万个软件免费高速下载
教育教学 安全相关 游戏娱乐 源码下载 编程开发 数码软件 其它类别
网络软件 联络聊天 系统工具 媒体工具 图形图像 应用软件 行业软件
·安装实战:freebsd6.1桌面安装指南
·右键发送到"桌面快捷方式"
·庆“六一” 宝宝照片做电脑桌面壁纸
·让迷失的桌面图标回“家”
·用dde创建桌面快捷方式
·玩转桌面个性:壁纸特效也疯狂
·书之精灵:起点小说桌面看
·“我要地图”桌面版电子地图试用手记
·不再一成不变 让xp“主题”在桌面绽
·用自己的照片做漂亮个性的电脑桌面
 
·接口和抽象类的定义方式举例说明
·用maven制作java项目发行包
·java 基础入门 pom.xml 元素描述
·用jbuilder2007开发扩展jsf标签的插
·抽象类对象类和对象包装类
·使用java实现在文件中添加字符串
·instanceof和回调概念
·java变量的赋值与传递
·java se6调用java编译器的两种新方法
·weblogic运用db的java控件访问数据库

扫描关注微信公众号