首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> JAVA >> 正文
Java SE 6.0实现高质量桌面集成开发
来源:ChinaItLab 作者:佚名 时间:2007-11-15



  显示一个splash屏幕的第二种方法是,使用-splash命令行参数传递splash屏幕文件名,如下所示

C:\mustang\build> java -splash:gomustang-splash.gif GoMustang

  注意,为了使该命令正常运行,你需要从c:\mustang\build目录(编译class文件和splash屏幕GIF文件所在的位置)下使用Java的命令行方式。这些文件都是由Ant中的build.xml文件中的任务所创建。

  一旦应用程序获得一个线程的存取权限,你就可以使用java.awt.SplashScreen类通过编程存取Splash屏幕。这是一个singleton类,它提供专门的函数来改变Splash屏幕图像,检索Splash屏幕的大小和界限,操作有关图形对象,并最后关闭Splash屏幕。

  四、 GoMustang.java文件

  在继续之前,你应该先熟悉一下GoMustang.java文件。这个文件定义一个单个的Java类GoMustang,并且包含下列两个关键函数:

  · main
  · createTrayIcon()

  你可能已经猜出,main是主要的入口点-你可以存取java.awt.SplashScreen Java类以操作Splash屏幕。在GoMustang应用程序中,你可以使它暂停几秒,然后通过调用splashScreen.close()来关闭Splash屏幕。然而,你可以在关闭它之前来操作该Splash屏幕。
createTrayIcon()类是这两个函数中更为令人激动的。它负责实现所有的有趣的工作来安装应用程序。这又涉及到我们将要讨论的另一个主题:系统托盘图标。

  五、 系统托盘图标

  系统托盘位于Windows的任务状态区或位于Gnome的通知区。它是在一个操作系统的桌面UI的角落的一个很小的区域,能提供到当前运行的应用程序的可视化和直接的存取。本文所提供的Windows平台上的GoMustang应用程序能够实现当右击系统托盘图标时产生一个弹出菜单(见图4)。


图4.在系统托盘上的GoMustang的弹出菜单


  该GoMustang应用程序SystemTray有一个弹出菜单。菜单有两个菜单项:"Exit"和"Launch Browser"。"Exit"负责退出应用程序,而"Launch Browser"负责打开默认的互联网浏览器并使其指向http://www.devx.com。

  在过去,创建能够灵活控制操作系统的桌面系统托盘的Java应用程序需要不是Java核心部分的库的支持。为此,产生了JDIC(Java桌面集成组件),而且Sun决定把JDIC的一些组件作为Java SE 6的一部分一同发行。相关的类java.awt.SystemTray和java.awt.Desktop描述了这些关键组件。其中,Java.awt.SystemTray描述操作系统的任务状态区或通知区。

  显示在系统托盘中的图标是由java.awt.TrayIcon描述的。TrayIcon不仅描述图像而且还描述接收事件的实际对象,并负责显示提示信息,添加弹出菜单项,显示消息,等等。你可以通过displayMessage(String)和setToolTip(String)函数来设置TrayIcon上的消息和提示信息。TrayIcon还能把ActionEvents转发到经由Trayicon的addActionListener(ActionListener)函数注册的ActionListener。弹出菜单是由java.awt.PopupMenu描述的,而且你可以通过addPopupMenu(PopupMenu)函数把它们添加到TrayIcon。

  下面,让我们剖析一下GoMustang Java类的createTrayIcon()函数。正如在列表1(见所附源码)中的GoMustang代码的详细注释所表明的:首先,你要调用SystemTray.isSupported()函数来检查是否操作系统支持最小SystemTray功能;如果支持的话,这个函数应该返回true。

  一旦程序知道操作系统支持系统托盘功能,它就创建Exit和Launch Browser菜单项,而且把这些菜单项加到弹出菜单中。当用户右击系统托盘的图标时,这个菜单就会弹出。ActionListeners函数被加到Exit和Launch Browser菜单项上。当用户选择这些菜单项时,actionPerformed(ActionEvent)将给程序一个机会执行某种动作。这对于Exit菜单项来说是通过执行System.exit(0)命令而退出应用程序;而对于Launch Browser菜单项来说是通过指向http://www.devx.com而启动缺省的浏览器。注意,启动浏览器需要使用新的java.awt.Desktop对象(稍后再讨论)。

  然后,应用程序创建一个弹出菜单对象并且把Exit和Launch Browser菜单项添加到弹出菜单。下一步是用一个奔马图像创建托盘图标。你可以使用getClass().getResourceAsStream(file name)函数存取本文下载源码中的gomustang.gif文件并把它加载到一个图像对象中。然后,托盘图标对象就可以与弹出菜单一同创建;Action和鼠标听取器也被关联到托盘图标上--对于本文例程来说,只显示一条消息。托盘图标最后被添加到系统托盘上。系统托盘是一个singleton对象,它可以通过SystemTray对象的getSystemTray()函数加以检索。在系统托盘上创建托盘图标的完整过程就是这样。

  现在,让我们更详细地看一下"Launch Browser"菜单项是如何启动浏览器的。你可以分析相应于"Launch Browser"菜单项的函数actionPerformed(ActionEvent)"来查看如何使用桌面对象。请参考下面代码(列表2的一部分):

...
MenuItem launchBrowserItem = new MenuItem("Launch Browser");
ActionListener launchListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (Desktop.isDesktopSupported()) {
actionMessage = "Launched Browser";
try{
trayIcon.displayMessage("GoMustang!",
"Launching Browser...", TrayIcon.MessageType.INFO);
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI("http://dev.yesky.com"));
trayIcon.setToolTip("GoMustang!");
}
catch(Exception exp){...}
}
}
};
launchBrowserItem.addActionListener(launchListener);
...

  在列表2(见所附源码)中最让我们感兴趣的关键对象是java.awt.Desktop类。这个Desktop类,如我们早些时候所提及的,来自JDIC。该Desktop类负责定位和运行操作系统特定的桌面应用程序。默认的因特网浏览器应用程序映射是Mozilla的FireFox;因此,在显示消息"Launching Browser..."以后,desktop.browse(URI)函数将打开一个指向http://dev.yesky.com的窗口。

上一页  [1] [2] [3] 下一页

【责编:Luzi】
中国IT教育热线咨询
相关文章
框架:J2EE WEB应用架构分析…
几种VC++数据库开发技术的相对比较
利用C#实现标注式消息提示窗口
用C#创建COM对象
Visual C#多线程参数传递浅析…
Visual C#多线程参数传递浅析…
基于HOOK和MMF的Win密码渗透技术
Visual C++设计超强仿QQ自动伸缩窗口…
Visual Basic 9.0隐式类型的局部变量…
JMX+J2SE5.0实现Web应用的安全管理
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05