- java.lang.Object
-
- java.awt.Desktop
-
public class Desktop extends Object
Desktop
类允许与各种桌面功能进行交互。支持的操作包括:
- 启动用户默认浏览器以显示指定的URI;
- 使用可选的
mailto
URI启动用户默认邮件客户端; - 启动已注册的应用程序以打开,编辑或打印指定的文件。
此类提供与这些操作相对应的方法。 这些方法查找在当前平台上注册的关联应用程序,并启动它以处理URI或文件。 如果没有关联的应用程序或关联的应用程序无法启动,则会引发异常。 有关支持的操作和功能的完整列表,请参阅
Desktop.Action
。应用程序已注册到URI或文件类型。 注册,访问和启动相关应用程序的机制取决于平台。
每个操作都是由
Desktop.Action
类表示的操作类型。注意:当调用某个操作并执行关联的应用程序时,它将在与启动Java应用程序的系统相同的系统上执行。
- 从以下版本开始:
- 1.6
- 另请参见:
-
Desktop.Action
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
Desktop.Action
表示操作类型。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 void
addAppEventListener(SystemEventListener listener)
添加子类型SystemEventListener
以侦听来自本机系统的通知。void
browse(URI uri)
启动默认浏览器以显示URI
。void
browseFileDirectory(File file)
打开包含file
的文件夹,并在默认系统文件管理器中选择它。void
disableSuddenTermination()
防止此应用程序突然终止。void
edit(File file)
启动关联的编辑器应用程序并打开文件进行编辑。void
enableSuddenTermination()
使该应用程序突然终止。static Desktop
getDesktop()
返回当前桌面上下文的Desktop
实例。static boolean
isDesktopSupported()
测试当前平台是否支持此类。boolean
isSupported(Desktop.Action action)
测试当前平台是否支持某个操作。void
mail()
启动用户默认邮件客户端的邮件撰写窗口。void
mail(URI mailtoURI)
启动用户默认邮件客户端的邮件撰写窗口,填充由mailto:
URI指定的邮件字段。boolean
moveToTrash(File file)
将指定的文件移动到废纸篓。void
open(File file)
启动关联的应用程序以打开文件。void
openHelpViewer()
打开本机帮助查看器应用程序。void
print(File file)
使用关联应用程序的print命令,使用本机桌面打印工具打印文件。void
removeAppEventListener(SystemEventListener listener)
删除子类型SystemEventListener
以侦听来自本机系统的通知。void
requestForeground(boolean allWindows)
请求此应用程序移至前台。void
setAboutHandler(AboutHandler aboutHandler)
安装处理程序以显示应用程序的自定义“关于”窗口。void
setDefaultMenuBar(JMenuBar menuBar)
设置没有活动帧时要使用的默认菜单栏。void
setOpenFileHandler(OpenFilesHandler openFileHandler)
安装在要求应用程序打开文件列表时通知的处理程序。void
setOpenURIHandler(OpenURIHandler openURIHandler)
安装在要求应用程序打开URL时通知的处理程序。void
setPreferencesHandler(PreferencesHandler preferencesHandler)
安装处理程序以显示应用程序的自定义“首选项”窗口。void
setPrintFileHandler(PrintFilesHandler printFileHandler)
安装处理程序,当要求应用程序打印文件列表时,会通知该处理程序。void
setQuitHandler(QuitHandler quitHandler)
安装处理程序,确定应用程序是否应该退出。void
setQuitStrategy(QuitStrategy strategy)
设置用于退出此应用程序的默认策略。
-
-
-
方法详细信息
-
getDesktop
public static Desktop getDesktop()
- 结果
- 桌面实例
- 异常
-
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(Action)
可能会返回true
,但相应的操作方法将抛出IOException
。- 参数
-
action
- 指定的Desktop.Action
- 结果
-
true
如果当前平台支持指定的操作; 否则为false
- 另请参见:
-
Desktop.Action
-
open
public void open(File file) throws IOException
启动关联的应用程序以打开文件。如果指定的文件是目录,则启动当前平台的文件管理器以将其打开。
- 参数
-
file
- 要使用关联的应用程序打开的文件 - 异常
-
NullPointerException
- 如果file
是null
-
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
使用关联应用程序的print命令,使用本机桌面打印工具打印文件。- 参数
-
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
,则会调用为处理指定类型的URIs
而注册的应用程序。 该应用程序由URI
的协议和路径确定,如URI
类所定义。- 参数
-
uri
- 要在用户默认浏览器中显示的URI - 异常
-
NullPointerException
- 如果uri
是null
-
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.BROWSE
操作 -
IOException
- 如果找不到用户默认浏览器,或者无法启动,或者默认处理程序应用程序无法启动 -
SecurityException
- 如果存在安全管理器并且它拒绝AWTPermission("showWindowWithoutWarningBanner")
权限,或者不允许调用线程创建子进程 - 另请参见:
-
URI
,AWTPermission
-
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规范的详细信息,请参阅The mailto URL scheme (RFC 2368) 。- 参数
-
mailtoURI
- 指定的mailto:
URI - 异常
-
NullPointerException
- 如果指定的URI是null
-
IllegalArgumentException
- 如果URI方案不是"mailto"
-
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.MAIL
操作 -
IOException
- 如果未找到用户默认邮件客户端或无法启动 -
SecurityException
- 如果存在安全管理器并且它拒绝AWTPermission("showWindowWithoutWarningBanner")
权限,或者不允许调用线程创建子进程 - 另请参见:
-
URI
,AWTPermission
-
addAppEventListener
public void addAppEventListener(SystemEventListener listener)
添加子类型SystemEventListener
以侦听来自本机系统的通知。 如果当前平台上不支持SystemEventListener的子类型,则无效。- 参数
-
listener
- 听众 - 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限 - 从以下版本开始:
- 9
- 另请参见:
-
AppForegroundListener
,AppHiddenListener
,AppReopenedListener
,ScreenSleepListener
,SystemSleepListener
,UserSessionListener
-
removeAppEventListener
public void removeAppEventListener(SystemEventListener listener)
删除子类型SystemEventListener
以侦听来自本机系统的通知。 如果当前平台上不支持SystemEventListener的子类型,则无效。- 参数
-
listener
- 听众 - 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限 - 从以下版本开始:
- 9
- 另请参见:
-
AppForegroundListener
,AppHiddenListener
,AppReopenedListener
,ScreenSleepListener
,SystemSleepListener
,UserSessionListener
-
setAboutHandler
public void setAboutHandler(AboutHandler aboutHandler)
安装处理程序以显示应用程序的自定义“关于”窗口。将
AboutHandler
设置为nullnull
恢复为默认行为。- 参数
-
aboutHandler
- 响应AboutHandler.handleAbout(AboutEvent)
消息的处理程序 - 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_ABOUT
操作 - 从以下版本开始:
- 9
-
setPreferencesHandler
public void setPreferencesHandler(PreferencesHandler preferencesHandler)
安装处理程序以显示应用程序的自定义“首选项”窗口。将
PreferencesHandler
设置为nullnull
恢复为默认行为- 参数
-
preferencesHandler
-处理程序向响应PreferencesHandler.handlePreferences(PreferencesEvent)
- 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_PREFERENCES
操作 - 从以下版本开始:
- 9
-
setOpenFileHandler
public void setOpenFileHandler(OpenFilesHandler openFileHandler)
安装在要求应用程序打开文件列表时通知的处理程序。- Implementation Note:
-
请注意,适用于MacOS,通知仅如果Java应用程序是一个捆绑的应用程序发送的,具有
CFBundleDocumentTypes
出现在其阵列Info.plist
。 有关Info.plist的更多信息,请查看Info.plist
。 - 参数
-
openFileHandler
- 处理程序 - 异常
-
SecurityException
- 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)
方法拒绝对文件的读访问权,或者它拒绝RuntimePermission("canProcessApplicationEvents")
权限,或者不允许调用线程创建子进程 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_OPEN_FILE
操作 - 从以下版本开始:
- 9
-
setPrintFileHandler
public void setPrintFileHandler(PrintFilesHandler printFileHandler)
安装处理程序,当要求应用程序打印文件列表时,会通知该处理程序。- Implementation Note:
-
请注意,对于macOS,仅当Java应用程序是捆绑应用程序时才会发送通知,其
Info.plist
包含CFBundleDocumentTypes
阵列。 有关Info.plist的更多信息,请查看Info.plist
。 - 参数
-
printFileHandler
- 处理程序 - 异常
-
SecurityException
- 如果存在安全管理器且其SecurityManager.checkPrintJobAccess()
方法拒绝打印权限或拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_PRINT_FILE
操作 - 从以下版本开始:
- 9
-
setOpenURIHandler
public void setOpenURIHandler(OpenURIHandler openURIHandler)
安装在要求应用程序打开URL时通知的处理程序。 将处理程序设置为null
会导致所有OpenURIHandler.openURI(OpenURIEvent)
请求入队,直到设置了另一个处理程序。- Implementation Note:
-
请注意,对于macOS,仅当Java应用程序是捆绑应用程序时才会发送通知,其
Info.plist
存在CFBundleDocumentTypes
阵列。 有关Info.plist的更多信息,请查看Info.plist
。 - 参数
-
openURIHandler
- 处理程序RuntimePermission("canProcessApplicationEvents")
权限,或者不允许调用线程创建子进程 - 异常
-
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_OPEN_URI
操作 - 从以下版本开始:
- 9
-
setQuitHandler
public void setQuitHandler(QuitHandler quitHandler)
- 参数
-
quitHandler
- 要求退出应用程序时调用的处理程序 - 异常
-
SecurityException
- 如果存在安全管理器且不允许调用者调用System.exit
或它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_QUIT_HANDLER
操作 - 从以下版本开始:
- 9
-
setQuitStrategy
public void setQuitStrategy(QuitStrategy strategy)
设置用于退出此应用程序的默认策略。 默认值是调用SYSTEM_EXIT_0。- 参数
-
strategy
- 应该关闭此应用程序的方式 - 异常
-
SecurityException
- 如果存在安全管理器且它不允许调用者调用System.exit
或它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_QUIT_STRATEGY
操作 - 从以下版本开始:
- 9
- 另请参见:
-
QuitStrategy
-
enableSuddenTermination
public void enableSuddenTermination()
使该应用程序突然终止。 调用此方法以指示应用程序的状态已保存,并且不需要终止通知。 让应用程序保持可终止状态可以避免在应用程序要求退出时重新分页,从而改善用户体验。 注意:启用突然终止将允许您的应用程序退出而不通知您的QuitHandler或运行任何关闭挂钩。 例如,用户启动的Cmd-Q,注销,重启或关闭请求将有效地“杀死-KILL”您的应用程序。- 异常
-
SecurityException
- 如果存在安全管理器并且它不允许调用者调用System.exit
或它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_SUDDEN_TERMINATION
操作 - 从以下版本开始:
- 9
- 另请参见:
-
disableSuddenTermination()
-
disableSuddenTermination
public void disableSuddenTermination()
防止此应用程序突然终止。 调用此方法以指示您的应用程序具有未保存状态,并且可能不会在没有通知的情况下终止。- 异常
-
SecurityException
- 如果存在安全管理器并且它不允许调用者调用System.exit
或它拒绝RuntimePermission("canProcessApplicationEvents")
权限 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_SUDDEN_TERMINATION
操作 - 从以下版本开始:
- 9
- 另请参见:
-
enableSuddenTermination()
-
requestForeground
public void requestForeground(boolean allWindows)
请求此应用程序移至前台。- 参数
-
allWindows
- 如果此应用程序的所有窗口都应移动到前台,或仅移动到最前面的窗口 - 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限。 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_REQUEST_FOREGROUND
操作 - 从以下版本开始:
- 9
-
openHelpViewer
public void openHelpViewer()
打开本机帮助查看器应用程序。- Implementation Note:
- 请注意,对于Mac OS,如果已将帮助手册添加到应用程序捆绑包并使用CFBundleHelpBookFolder在Info.plist中注册,则会打开本机帮助查看器应用程序
- 异常
-
SecurityException
- 如果存在安全管理器并且它拒绝RuntimePermission("canProcessApplicationEvents")
权限,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")
权限,或者不允许调用线程创建子进程 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_HELP_VIEWER
操作 - 从以下版本开始:
- 9
-
setDefaultMenuBar
public void setDefaultMenuBar(JMenuBar menuBar)
设置没有活动帧时要使用的默认菜单栏。- 参数
-
menuBar
- 在没有其他帧处于活动状态时使用 - 异常
-
SecurityException
- 如果存在安全管理器且它拒绝RuntimePermission("canProcessApplicationEvents")
权限。 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.APP_MENU_BAR
操作 - 从以下版本开始:
- 9
-
browseFileDirectory
public void browseFileDirectory(File file)
打开包含file
的文件夹,并在默认系统文件管理器中选择它。- 参数
-
file
- 该文件 - 异常
-
SecurityException
- 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)
方法拒绝对该文件或其父级的读访问权,或者它拒绝AWTPermission("showWindowWithoutWarningBanner")
权限,或者不允许调用线程创建子进程 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.BROWSE_FILE_DIR
操作 -
NullPointerException
- 如果file
是null
-
IllegalArgumentException
- 如果指定的文件或其父文件不存在 - 从以下版本开始:
- 9
-
moveToTrash
public boolean moveToTrash(File file)
将指定的文件移动到废纸篓。- 参数
-
file
- 该文件 - 结果
- 如果成功将文件移动到废纸篓,则返回true。
- 异常
-
SecurityException
- 如果存在安全管理器且其SecurityManager.checkDelete(java.lang.String)
方法拒绝删除该文件 -
UnsupportedOperationException
- 如果当前平台不支持Desktop.Action.MOVE_TO_TRASH
操作 -
NullPointerException
- 如果file
是null
-
IllegalArgumentException
- 如果指定的文件不存在 - 从以下版本开始:
- 9
-
-