Desktop类和SystemTray类
JDK 1.6 AWT 新增加了两个类:Desktop 和 SystemTray
前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序。
这两个类都为工厂类,其构造函数是private,这也就意味着我们需要调用其静态方法来获取此类的实例。
Desktop类
Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理 URI 或文件。
支持的操作包括:
- 启动用户默认浏览器来显示指定的 URI;
- 启动带有可选 mailto URI 的用户默认邮件客户端;
- 启动已注册的应用程序,以打开、编辑或打印指定的文件。
- 此类提供与这些操作对应的方法。这些方法查找在当前平台上注册的关联应用程序,并启动该应用程序来处理 URI 或文件。如果没有关联应用程序或关联应用程序无法启动,则抛出异常。
- 应用程序被注册为 URI 或文件类型;例如,”sxi” 文件扩展名通常注册为 StarOffice。注册、访问和启动关联应用程序的机制与平台有关。
每个操作都是由 Desktop.Action
类表示的一种动作类型。
注:当调用一些动作和执行关联应用程序时,将在与启动 Java 应用程序相同的系统上执行它们。
与Desktop类具有类似功能的类有Runtime类。
SystemTray类
SystemTray 类表示桌面的系统托盘。在 Microsoft Windows 上,它被称为“任务栏状态区域 (Taskbar Status Area)”,在 Gnome 上,它被称为“通知区域 (Notification Area)”,在 KDE 上,它被成为“系统托盘 (System Tray)”。系统托盘由运行在桌面上的所有应用程序共享。
在某些平台上,可能不存在或不支持系统托盘,在这种情况下,getSystemTray() 将抛出 UnsupportedOperationException。要检查系统托盘是否受支持,可以使用 isSupported()。
SystemTray 可以包含一个或多个 TrayIcon,可以使用 add(java.awt.TrayIcon) 方法将它们添加到托盘,当不再需要托盘时,使用 remove(java.awt.TrayIcon) 移除它。TrayIcon 由图像、弹出菜单和一组相关侦听器组成。
每个 Java 应用程序都有一个 SystemTray 实例,在应用程序运行时,它允许应用程序与桌面系统托盘建立连接。SystemTray 实例可以通过 getSystemTray() 方法获得。应用程序不能创建自己的 SystemTray 实例。
示例:
TrayIcon trayIcon = null;
if (SystemTray.isSupported()){
// get the SystemTray instance
SystemTray tray = SystemTray.getSystemTray();
// load an image
Image image = Toolkit.getDefaultToolkit.getImage(...);
// create a action listener to listen for default action executed on the tray icon
ActionListener listener = new ActionListener(){
public void actionPerformed(ActionEvent e) {
// execute default action of the application
//