java.lang.Object
java.awt.Desktop
Desktop 类允许与各种桌面功能进行交互。
支持的操作包括:
- 启动用户默认浏览器以显示指定的 URI;
- 使用可选的
mailtoURI 启动用户默认邮件客户端; - 启动已注册的应用程序以打开、编辑或打印指定文件。
该类提供了与这些操作对应的方法。这些方法查找在当前平台上注册的关联应用程序,并启动它来处理 URI 或文件。如果没有关联应用或者关联应用启动失败,则抛出异常。请参阅 Desktop.Action 以获取支持的操作和功能的完整列表。
应用程序注册到 URI 或文件类型。注册、访问和启动关联应用程序的机制是平台相关的。
每个操作都是一个由 Desktop.Action 类表示的动作类型。
注意:当调用某个动作并执行关联的应用程序时,它将在与启动 Java 应用程序的系统相同的系统上执行。
- 自从:
- 1.6
- 参见:
-
内部类总结
内部类 -
方法总结
修饰符和类型方法描述voidaddAppEventListener(SystemEventListener listener) 添加SystemEventListener的子类型以监听来自本机系统的通知。void启动默认浏览器以显示URI。voidbrowseFileDirectory(File file) 打开包含file的文件夹并在默认系统文件管理器中选择它。void防止此应用程序突然终止。void启动关联的编辑器应用程序并打开文件进行编辑。void使此应用程序能够突然终止。static Desktop返回当前桌面上下文的Desktop实例。static boolean测试当前平台是否支持此类。booleanisSupported(Desktop.Action action) 测试当前平台是否支持操作。voidmail()启动用户默认邮件客户端的邮件撰写窗口。void启动用户默认邮件客户端的邮件撰写窗口,填写由mailto:URI 指定的消息字段。booleanmoveToTrash(File file) 将指定的文件移动到回收站。void启动关联的应用程序以打开文件。void打开本机帮助查看器应用程序。void使用关联应用程序的打印命令,使用本机桌面打印工具打印文件。voidremoveAppEventListener(SystemEventListener listener) 删除SystemEventListener的子类型以监听来自本机系统的通知。voidrequestForeground(boolean allWindows) 请求此应用程序移至前台。voidsetAboutHandler(AboutHandler aboutHandler) 安装处理程序以显示应用程序的自定义“关于”窗口。voidsetDefaultMenuBar(JMenuBar menuBar) 设置在没有活动框架时使用的默认菜单栏。voidsetOpenFileHandler(OpenFilesHandler openFileHandler) 安装当要求应用程序打开文件列表时通知的处理程序。voidsetOpenURIHandler(OpenURIHandler openURIHandler) 安装当要求应用程序打开 URL 时通知的处理程序。voidsetPreferencesHandler(PreferencesHandler preferencesHandler) 安装处理程序以显示应用程序的自定义首选项窗口。voidsetPrintFileHandler(PrintFilesHandler printFileHandler) 安装当要求应用程序打印文件列表时通知的处理程序。voidsetQuitHandler(QuitHandler quitHandler) 安装确定应用程序是否应退出的处理程序。voidsetQuitStrategy(QuitStrategy strategy) 设置用于退出此应用程序的默认策略。
-
方法详情
-
getDesktop
返回当前桌面上下文的Desktop实例。在某些平台上可能不支持 Desktop API;使用isDesktopSupported()方法确定当前桌面是否受支持。- 返回:
- 桌面实例
- 抛出:
HeadlessException- 如果GraphicsEnvironment.isHeadless()返回trueUnsupportedOperationException- 如果当前平台不支持此类- 参见:
-
isDesktopSupported
public static boolean isDesktopSupported()测试当前平台是否支持此类。如果支持,请使用getDesktop()检索实例。- 返回:
true当前平台是否支持此类;false否则- 参见:
-
isSupported
测试当前平台是否支持操作。即使平台支持某个动作,文件或 URI 也可能没有该动作的注册应用程序。例如,大多数平台都支持
Desktop.Action.OPEN操作。但对于特定文件,可能没有注册打开它的应用程序。在这种情况下,isSupported(Action)可能会返回true,但相应的操作方法将抛出一个IOException。- 参数:
action- 指定的Desktop.Action- 返回:
true当前平台是否支持指定的操作;false否则- 参见:
-
open
启动关联的应用程序以打开文件。如果指定的文件是目录,则启动当前平台的文件管理器打开。
- 参数:
file- 要使用关联应用程序打开的文件- 抛出:
NullPointerException- 如果file是nullIllegalArgumentException- 如果指定的文件不存在UnsupportedOperationException- 如果当前平台不支持Desktop.Action.OPEN操作IOException- 如果指定文件没有关联应用程序或关联应用程序启动失败SecurityException- 如果安全管理器存在并且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程- 参见:
-
edit
启动关联的编辑器应用程序并打开文件进行编辑。- 参数:
file- 要打开进行编辑的文件- 抛出:
NullPointerException- 如果指定的文件是nullIllegalArgumentException- 如果指定的文件不存在UnsupportedOperationException- 如果当前平台不支持Desktop.Action.EDIT操作IOException- 如果指定的文件没有关联的编辑器,或者关联的应用程序无法启动SecurityException- 如果安全管理器存在并且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读访问,或者SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程- 参见:
-
print
使用关联应用程序的打印命令,使用本机桌面打印工具打印文件。- 参数:
file- 要打印的文件- 抛出:
NullPointerException- 如果指定的文件是nullIllegalArgumentException- 如果指定的文件不存在UnsupportedOperationException- 如果当前平台不支持Desktop.Action.PRINT操作IOException- 如果指定的文件没有可用于打印它的关联应用程序SecurityException- 如果安全管理器存在并且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问,或者其SecurityManager.checkPrintJobAccess()方法拒绝打印文件的权限,或者不允许调用线程创建子进程
-
browse
启动默认浏览器以显示URI。如果默认浏览器无法处理指定的URI,则调用为处理指定类型的URIs而注册的应用程序。应用程序由URI的协议和路径确定,如URI类所定义。- 参数:
uri- 要在用户默认浏览器中显示的 URI- 抛出:
NullPointerException- 如果uri是nullUnsupportedOperationException- 如果当前平台不支持Desktop.Action.BROWSE操作IOException- 如果未找到用户默认浏览器,或者启动失败,或者启动默认处理程序应用程序失败SecurityException- 如果安全管理器存在并且它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程- 参见:
-
mail
启动用户默认邮件客户端的邮件撰写窗口。- 抛出:
UnsupportedOperationException- 如果当前平台不支持Desktop.Action.MAIL操作IOException- 如果未找到用户默认邮件客户端,或者无法启动SecurityException- 如果安全管理器存在并且它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程- 参见:
-
mail
启动用户默认邮件客户端的邮件撰写窗口,填写由mailto:URI 指定的消息字段。mailto:URI 可以指定消息字段,包括“到”, “抄送”, “主题”, “身体”等。有关mailto:URI 规范的详细信息,请参阅 mailto URL 方案 (RFC 2368)。- 参数:
mailtoURI- 指定的mailto:URI- 抛出:
NullPointerException- 如果指定的 URI 是nullIllegalArgumentException- 如果 URI 方案不是"mailto"UnsupportedOperationException- 如果当前平台不支持Desktop.Action.MAIL操作IOException- 如果未找到用户默认邮件客户端或无法启动SecurityException- 如果安全管理器存在并且它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程- 参见:
-
addAppEventListener
添加SystemEventListener的子类型以监听来自本机系统的通知。如果当前平台不支持 SystemEventListener 的子类型,则无效。- 参数:
listener- 听众- 抛出:
SecurityException- 如果安全管理器存在并且它拒绝RuntimePermission("canProcessApplicationEvents")权限- 自从:
- 9
- 参见:
-
removeAppEventListener
删除SystemEventListener的子类型以监听来自本机系统的通知。如果当前平台不支持 SystemEventListener 的子类型,则无效。- 参数:
listener- 听众- 抛出:
SecurityException- 如果安全管理器存在并且它拒绝RuntimePermission("canProcessApplicationEvents")权限- 自从:
- 9
- 参见:
-
setAboutHandler
安装处理程序以显示应用程序的自定义“关于”窗口。将
AboutHandler设置为null会将其恢复为默认行为。- 参数:
aboutHandler- 响应AboutHandler.handleAbout(AboutEvent)消息的处理程序- 抛出:
SecurityException- 如果安全管理器存在并且它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_ABOUT操作- 自从:
- 9
-
setPreferencesHandler
安装处理程序以显示应用程序的自定义首选项窗口。将
PreferencesHandler设置为null会将其恢复为默认行为- 参数:
preferencesHandler- 响应PreferencesHandler.handlePreferences(PreferencesEvent)的处理程序- 抛出:
SecurityException- 如果安全管理器存在并且它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_PREFERENCES操作- 自从:
- 9
-
setOpenFileHandler
安装当要求应用程序打开文件列表时通知的处理程序。- 实现注意事项:
-
请注意,对于 macOS,仅当 Java 应用程序是捆绑应用程序时才会发送通知,其
Info.plist中存在CFBundleDocumentTypes数组。查看 Apple 开发者文档 了解有关Info.plist的更多信息。 - 参数:
openFileHandler- 处理程序- 抛出:
SecurityException- 如果安全管理器存在并且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问,或者它拒绝RuntimePermission("canProcessApplicationEvents")权限,或者不允许调用线程创建子进程UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_OPEN_FILE操作- 自从:
- 9
-
setPrintFileHandler
安装当要求应用程序打印文件列表时通知的处理程序。- 实现注意事项:
-
请注意,对于 macOS,仅当 Java 应用程序是捆绑应用程序时才会发送通知,其
Info.plist中存在CFBundleDocumentTypes数组。查看 Apple 开发者文档 了解有关Info.plist的更多信息。 - 参数:
printFileHandler- 处理程序- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkPrintJobAccess()方法拒绝打印权限或拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_PRINT_FILE操作- 自从:
- 9
-
setOpenURIHandler
安装当要求应用程序打开 URL 时通知的处理程序。将处理程序设置为null会导致所有OpenURIHandler.openURI(OpenURIEvent)请求排队,直到设置另一个处理程序。- 实现注意事项:
-
请注意,对于 macOS,仅当 Java 应用程序是捆绑应用程序时才会发送通知,其
Info.plist中存在CFBundleDocumentTypes数组。查看 Apple 开发者文档 了解有关Info.plist的更多信息。 - 参数:
openURIHandler- handlerRuntimePermission("canProcessApplicationEvents")权限,或者调用线程不允许创建子进程- 抛出:
UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_OPEN_URI操作- 自从:
- 9
-
setQuitHandler
安装确定应用程序是否应退出的处理程序。处理程序被传递了一个一次性的QuitResponse,它可以取消或继续退出。将处理程序设置为null会导致所有退出请求直接执行默认的QuitStrategy。- 参数:
quitHandler- 要求应用程序退出时调用的处理程序- 抛出:
SecurityException- 如果安全管理器存在并且它将不允许调用者调用System.exit或它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_QUIT_HANDLER操作- 自从:
- 9
-
setQuitStrategy
设置用于退出此应用程序的默认策略。默认调用 SYSTEM_EXIT_0。- 参数:
strategy- 这个应用程序应该关闭的方式- 抛出:
SecurityException- 如果安全管理器存在并且它将不允许调用者调用System.exit或它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_QUIT_STRATEGY操作- 自从:
- 9
- 参见:
-
enableSuddenTermination
public void enableSuddenTermination()使此应用程序能够突然终止。调用此方法以指示您的应用程序的状态已保存,并且无需通知即可终止。让您的应用程序保持可终止状态可以避免在应用程序被要求退出时重新分页,从而改善用户体验。注意:启用突然终止将允许您的应用程序在不通知您的 QuitHandler 或运行任何关闭挂钩的情况下退出。例如,用户启动的 Cmd-Q、注销、重新启动或关闭请求将有效地“杀死-杀死”您的应用程序。- 抛出:
SecurityException- 如果安全管理器存在并且它将不允许调用者调用System.exit或它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_SUDDEN_TERMINATION操作- 自从:
- 9
- 参见:
-
disableSuddenTermination
public void disableSuddenTermination()防止此应用程序突然终止。调用此方法以指示您的应用程序具有未保存的状态,并且可能不会在没有通知的情况下终止。- 抛出:
SecurityException- 如果安全管理器存在并且它将不允许调用者调用System.exit或它拒绝RuntimePermission("canProcessApplicationEvents")权限UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_SUDDEN_TERMINATION操作- 自从:
- 9
- 参见:
-
requestForeground
public void requestForeground(boolean allWindows) 请求此应用程序移至前台。- 参数:
allWindows- 如果此应用程序的所有窗口都应移至前台,或仅移至最前面的窗口- 抛出:
SecurityException- 如果存在安全管理器并且它拒绝RuntimePermission("canProcessApplicationEvents")权限。UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_REQUEST_FOREGROUND操作- 自从:
- 9
-
openHelpViewer
public void openHelpViewer()打开本机帮助查看器应用程序。- 实现注意事项:
- 请注意,对于 Mac OS,如果帮助手册已添加到应用程序捆绑器并在 Info.plist 中使用CFBundleHelpBookFolder注册,它会打开本机帮助查看器应用程序
- 抛出:
SecurityException- 如果安全管理器存在并且它拒绝RuntimePermission("canProcessApplicationEvents")权限,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_HELP_VIEWER操作- 自从:
- 9
-
setDefaultMenuBar
设置在没有活动框架时使用的默认菜单栏。- 参数:
menuBar- 在没有其他框架处于活动状态时使用- 抛出:
SecurityException- 如果存在安全管理器并且它拒绝RuntimePermission("canProcessApplicationEvents")权限。UnsupportedOperationException- 如果当前平台不支持Desktop.Action.APP_MENU_BAR操作- 自从:
- 9
-
browseFileDirectory
打开包含file的文件夹并在默认系统文件管理器中选择它。- 参数:
file- 文件- 抛出:
SecurityException- 如果安全管理器存在并且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件或其父进程的读取访问,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")权限,或者不允许调用线程创建子进程UnsupportedOperationException- 如果当前平台不支持Desktop.Action.BROWSE_FILE_DIR操作NullPointerException- 如果file是nullIllegalArgumentException- 如果指定文件或其父文件不存在- 自从:
- 9
-
moveToTrash
将指定的文件移动到回收站。- 参数:
file- 文件- 返回:
- 如果成功将文件移动到垃圾箱,则返回 true。
- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkDelete(java.lang.String)方法拒绝删除文件UnsupportedOperationException- 如果当前平台不支持Desktop.Action.MOVE_TO_TRASH操作NullPointerException- 如果file是nullIllegalArgumentException- 如果指定的文件不存在- 自从:
- 9
-