java.awt

接口
异常
错误
java.lang.Object
  继承者 java.awt.Desktop

public class Desktop
     
extends Object

Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理 URI 或文件。

支持的操作包括:

  • 启动用户默认浏览器来显示指定的 URI;
  • 启动带有可选 mailto URI 的用户默认邮件客户端;
  • 启动已注册的应用程序,以打开、编辑或打印指定的文件。

此类提供与这些操作对应的方法。这些方法查找在当前平台上注册的关联应用程序,并启动该应用程序来处理 URI 或文件。如果没有关联应用程序或关联应用程序无法启动,则抛出异常。

应用程序被注册为 URI 或文件类型;例如,"sxi" 文件扩展名通常注册为 StarOffice。注册、访问和启动关联应用程序的机制与平台有关。

每个操作都是由 Desktop.Action 类表示的一种动作类型。

注:当调用一些动作和执行关联应用程序时,将在与启动 Java 应用程序相同的系统上执行它们。

从以下版本开始:
1.6

嵌套类摘要
static class Desktop.Action
          表示动作类型。
 
方法摘要
 void browse(URI uri)
          启动默认浏览器来显示 URI
 void edit(File file)
          启动关联编辑器应用程序并打开用于编辑的文件。
static Desktop getDesktop()
          返回当前浏览器上下文的 Desktop 实例。
static boolean isDesktopSupported()
          测试当前平台是否支持此类。
 boolean isSupported(Desktop.Action action)
          测试当前平台是否支持某一动作。
 void mail()
          启动用户默认邮件客户端的邮件组合窗口。
 void mail(URI mailtoURI)
          启动用户默认邮件客户端的邮件组合窗口,填充由 mailto: URI 指定的消息字段。
 void open(File file)
          启动关联应用程序来打开文件。
 void print(File file)
          使用关联应用程序的打印命令,用本机桌面打印设施来打印文件。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getDesktop

public static Desktop getDesktop()
返回当前浏览器上下文的 Desktop 实例。一些平台不支持 Desktop API;可以使用 isDesktopSupported() 方法来确定是否支持当前桌面。

返回:
当前浏览器上下文的 Desktop 实例
抛出:
HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true
UnsupportedOperationException - 如果当前平台不支持此类
另请参见:
isDesktopSupported(), GraphicsEnvironment.isHeadless()

isDesktopSupported

public static boolean isDesktopSupported()
测试当前平台是否支持此类。如果不受支持,则使用 getDesktop() 获得实例。

返回:
如果当前平台支持此类,则返回 true;否则返回 false
另请参见:
getDesktop()

isSupported

public boolean isSupported(Desktop.Action action)
测试当前平台是否支持某一动作。

即使平台支持某一动作、文件或 URI,也可能没有针对该动作的注册应用程序。例如,大多数平台支持 Desktop.Action.OPEN 动作。但对于特定文件,可能没有用来打开它的注册应用程序。在这种情况下,isSupported(java.awt.Desktop.Action) 可能返回 true,但相应的动作方法将抛出 IOException

参数:
action - 指定的 Desktop.Action
返回:
如果当前平台支持指定的动作,则返回 true;否则返回 false
另请参见:
Desktop.Action

open

public void open(File file)
          throws IOException
启动关联应用程序来打开文件。

如果指定的文件是一个目录,则启动当前平台的文件管理器打开它。

参数:
file - 要用关联应用程序打开的文件
抛出:
NullPointerException - 如果 filenull
IllegalArgumentException - 如果指定文件不存在
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.OPEN 动作
IOException - 如果指定文件没有关联应用程序,或者关联应用程序无法启动
SecurityException - 如果安全管理器存在且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问;或者它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限;或者不允许调用线程创建子进程
另请参见:
AWTPermission

edit

public void edit(File file)
          throws IOException
启动关联编辑器应用程序并打开用于编辑的文件。

参数:
file - 要打开用于编辑的文件
抛出:
NullPointerException - 如果指定文件为 null
IllegalArgumentException - 如果指定文件不存在
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.EDIT 动作
IOException - 如果指定文件没有关联编辑器,或者关联应用程序无法启动
SecurityException - 如果安全管理器存在且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问;或者 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件进行写入访问;或者它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限;或者不允许调用线程创建子进程
另请参见:
AWTPermission

print

public void print(File file)
           throws IOException
使用关联应用程序的打印命令,用本机桌面打印设施来打印文件。

参数:
file - 要打印的文件
抛出:
NullPointerException - 如果指定文件为 null
IllegalArgumentException - 如果指定文件不存在
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.PRINT 动作
IOException - 如果指定文件没有可用于打印它的关联应用程序
SecurityException - 如果安全管理器存在且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问;或者其 SecurityManager.checkPrintJobAccess() 方法拒绝打印文件的权限;或者不允许调用线程创建子进程

browse

public void browse(URI uri)
            throws IOException
启动默认浏览器来显示 URI。如果默认浏览器无法处理指定的 URI,则调用用于处理指定类型的 URI 的注册应用程序。正如 URI 类定义的一样,根据协议和 URI 的路径确定应用程序。

如果调用线程没有必需的权限,且它是从 applet 中调用的,则使用 AppletContext.showDocument()。类似地,如果调用线程没有必需的权限,且它是从 Java Web Started 应用程序中调用的,则使用 BasicService.showDocument()

参数:
uri - 将显示在用户默认浏览器中的 URI
抛出:
NullPointerException - 如果 urinull
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.BROWSE 动作
IOException - 如果未找到用户默认浏览器或无法启动它,或者默认处理器应用程序无法启动
SecurityException - 如果安全管理器存在且它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限;或者它不允许调用线程创建子进程,且不是从 applet 或 Java Web Started 应用程序中调用的
IllegalArgumentException - 如果必需权限不可用且 URI 无法转换为 URL
另请参见:
URI, AWTPermission, AppletContext

mail

public void mail()
          throws IOException
启动用户默认邮件客户端的邮件组合窗口。

抛出:
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.MAIL 动作
IOException - 如果未找到默认邮件客户端,或者无法启动它
SecurityException - 如果安全管理器存在且它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限,或者它不允许调用线程创建子进程
另请参见:
AWTPermission

mail

public void mail(URI mailtoURI)
          throws IOException
启动用户默认邮件客户端的邮件组合窗口,填充由 mailto: URI 指定的消息字段。

mailto:URI 可以指定包含 "to""cc""subject""body" 等内容的消息字段。有关 mailto: URI 规范的详细信息,请参阅 mailto URL scheme (RFC 2368)

参数:
mailtoURI - 指定的 mailto:URI
抛出:
NullPointerException - 如果指定的 URI 为 null
IllegalArgumentException - 如果 URI 方案不是 "mailto"
UnsupportedOperationException - 如果当前平台不支持 Desktop.Action.MAIL 动作
IOException - 如果未找到用户默认邮件客户端或无法启动它
SecurityException - 如果安全管理器存在且它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限,或者它不允许调用线程创建子进程
另请参见:
URI, AWTPermission