- java.lang.Object
-
- java.awt.Desktop
-
public class Desktop extends Object
TheDesktop
class allows interact with various desktop capabilities.Supported operations include:
- launching the user-default browser to show a specified URI;
- launching the user-default mail client with an optional
mailto
URI; - launching a registered application to open, edit or print a specified file.
This class provides methods corresponding to these operations. The methods look for the associated application registered on the current platform, and launch it to handle a URI or file. If there is no associated application or the associated application fails to be launched, an exception is thrown. Please see
Desktop.Action
for the full list of supported operations and capabilities.An application is registered to a URI or file type. The mechanism of registering, accessing, and launching the associated application is platform-dependent.
Each operation is an action type represented by the
Desktop.Action
class.Note: when some action is invoked and the associated application is executed, it will be executed on the same system as the one on which the Java application was launched.
- Since:
- 1.6
- See Also:
Desktop.Action
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Desktop.Action
Represents an action type.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAppEventListener(SystemEventListener listener)
Adds sub-types ofSystemEventListener
to listen for notifications from the native system.void
browse(URI uri)
Launches the default browser to display aURI
.void
browseFileDirectory(File file)
Opens a folder containing thefile
and selects it in a default system file manager.void
disableSuddenTermination()
Prevents this application from being suddenly terminated.void
edit(File file)
Launches the associated editor application and opens a file for editing.void
enableSuddenTermination()
Enables this application to be suddenly terminated.static Desktop
getDesktop()
Returns theDesktop
instance of the current desktop context.static boolean
isDesktopSupported()
Tests whether this class is supported on the current platform.boolean
isSupported(Desktop.Action action)
Tests whether an action is supported on the current platform.void
mail()
Launches the mail composing window of the user default mail client.void
mail(URI mailtoURI)
Launches the mail composing window of the user default mail client, filling the message fields specified by amailto:
URI.boolean
moveToTrash(File file)
Moves the specified file to the trash.void
open(File file)
Launches the associated application to open the file.void
openHelpViewer()
Opens the native help viewer application.void
print(File file)
Prints a file with the native desktop printing facility, using the associated application's print command.void
removeAppEventListener(SystemEventListener listener)
Removes sub-types ofSystemEventListener
to listen for notifications from the native system.void
requestForeground(boolean allWindows)
Requests this application to move to the foreground.void
setAboutHandler(AboutHandler aboutHandler)
Installs a handler to show a custom About window for your application.void
setDefaultMenuBar(JMenuBar menuBar)
Sets the default menu bar to use when there are no active frames.void
setOpenFileHandler(OpenFilesHandler openFileHandler)
Installs the handler which is notified when the application is asked to open a list of files.void
setOpenURIHandler(OpenURIHandler openURIHandler)
Installs the handler which is notified when the application is asked to open a URL.void
setPreferencesHandler(PreferencesHandler preferencesHandler)
Installs a handler to show a custom Preferences window for your application.void
setPrintFileHandler(PrintFilesHandler printFileHandler)
Installs the handler which is notified when the application is asked to print a list of files.void
setQuitHandler(QuitHandler quitHandler)
Installs the handler which determines if the application should quit.void
setQuitStrategy(QuitStrategy strategy)
Sets the default strategy used to quit this application.
-
-
-
Method Detail
-
getDesktop
public static Desktop getDesktop()
Returns theDesktop
instance of the current desktop context. On some platforms the Desktop API may not be supported; use theisDesktopSupported()
method to determine if the current desktop is supported.- Returns:
- the Desktop instance
- Throws:
HeadlessException
- ifGraphicsEnvironment.isHeadless()
returnstrue
UnsupportedOperationException
- if this class is not supported on the current platform- See Also:
isDesktopSupported()
,GraphicsEnvironment.isHeadless()
-
isDesktopSupported
public static boolean isDesktopSupported()
Tests whether this class is supported on the current platform. If it's supported, usegetDesktop()
to retrieve an instance.- Returns:
true
if this class is supported on the current platform;false
otherwise- See Also:
getDesktop()
-
isSupported
public boolean isSupported(Desktop.Action action)
Tests whether an action is supported on the current platform.Even when the platform supports an action, a file or URI may not have a registered application for the action. For example, most of the platforms support the
Desktop.Action.OPEN
action. But for a specific file, there may not be an application registered to open it. In this case,isSupported(Action)
may returntrue
, but the corresponding action method will throw anIOException
.- Parameters:
action
- the specifiedDesktop.Action
- Returns:
true
if the specified action is supported on the current platform;false
otherwise- See Also:
Desktop.Action
-
open
public void open(File file) throws IOException
Launches the associated application to open the file.If the specified file is a directory, the file manager of the current platform is launched to open it.
- Parameters:
file
- the file to be opened with the associated application- Throws:
NullPointerException
- iffile
isnull
IllegalArgumentException
- if the specified file doesn't existUnsupportedOperationException
- if the current platform does not support theDesktop.Action.OPEN
actionIOException
- if the specified file has no associated application or the associated application fails to be launchedSecurityException
- if a security manager exists and itsSecurityManager.checkRead(java.lang.String)
method denies read access to the file, or it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocess- See Also:
AWTPermission
-
edit
public void edit(File file) throws IOException
Launches the associated editor application and opens a file for editing.- Parameters:
file
- the file to be opened for editing- Throws:
NullPointerException
- if the specified file isnull
IllegalArgumentException
- if the specified file doesn't existUnsupportedOperationException
- if the current platform does not support theDesktop.Action.EDIT
actionIOException
- if the specified file has no associated editor, or the associated application fails to be launchedSecurityException
- if a security manager exists and itsSecurityManager.checkRead(java.lang.String)
method denies read access to the file, orSecurityManager.checkWrite(java.lang.String)
method denies write access to the file, or it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocess- See Also:
AWTPermission
-
print
public void print(File file) throws IOException
Prints a file with the native desktop printing facility, using the associated application's print command.- Parameters:
file
- the file to be printed- Throws:
NullPointerException
- if the specified file isnull
IllegalArgumentException
- if the specified file doesn't existUnsupportedOperationException
- if the current platform does not support theDesktop.Action.PRINT
actionIOException
- if the specified file has no associated application that can be used to print itSecurityException
- if a security manager exists and itsSecurityManager.checkRead(java.lang.String)
method denies read access to the file, or itsSecurityManager.checkPrintJobAccess()
method denies the permission to print the file, or the calling thread is not allowed to create a subprocess
-
browse
public void browse(URI uri) throws IOException
Launches the default browser to display aURI
. If the default browser is not able to handle the specifiedURI
, the application registered for handlingURIs
of the specified type is invoked. The application is determined from the protocol and path of theURI
, as defined by theURI
class.- Parameters:
uri
- the URI to be displayed in the user default browser- Throws:
NullPointerException
- ifuri
isnull
UnsupportedOperationException
- if the current platform does not support theDesktop.Action.BROWSE
actionIOException
- if the user default browser is not found, or it fails to be launched, or the default handler application failed to be launchedSecurityException
- if a security manager exists and it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocess- See Also:
URI
,AWTPermission
-
mail
public void mail() throws IOException
Launches the mail composing window of the user default mail client.- Throws:
UnsupportedOperationException
- if the current platform does not support theDesktop.Action.MAIL
actionIOException
- if the user default mail client is not found, or it fails to be launchedSecurityException
- if a security manager exists and it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocess- See Also:
AWTPermission
-
mail
public void mail(URI mailtoURI) throws IOException
Launches the mail composing window of the user default mail client, filling the message fields specified by amailto:
URI.A
mailto:
URI can specify message fields including "to", "cc", "subject", "body", etc. See The mailto URL scheme (RFC 2368) for themailto:
URI specification details.- Parameters:
mailtoURI
- the specifiedmailto:
URI- Throws:
NullPointerException
- if the specified URI isnull
IllegalArgumentException
- if the URI scheme is not"mailto"
UnsupportedOperationException
- if the current platform does not support theDesktop.Action.MAIL
actionIOException
- if the user default mail client is not found or fails to be launchedSecurityException
- if a security manager exists and it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocess- See Also:
URI
,AWTPermission
-
addAppEventListener
public void addAppEventListener(SystemEventListener listener)
Adds sub-types ofSystemEventListener
to listen for notifications from the native system. Has no effect if SystemEventListener's sub-type is unsupported on the current platform.- Parameters:
listener
- listener- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permission- Since:
- 9
- See Also:
AppForegroundListener
,AppHiddenListener
,AppReopenedListener
,ScreenSleepListener
,SystemSleepListener
,UserSessionListener
-
removeAppEventListener
public void removeAppEventListener(SystemEventListener listener)
Removes sub-types ofSystemEventListener
to listen for notifications from the native system. Has no effect if SystemEventListener's sub-type is unsupported on the current platform.- Parameters:
listener
- listener- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permission- Since:
- 9
- See Also:
AppForegroundListener
,AppHiddenListener
,AppReopenedListener
,ScreenSleepListener
,SystemSleepListener
,UserSessionListener
-
setAboutHandler
public void setAboutHandler(AboutHandler aboutHandler)
Installs a handler to show a custom About window for your application.Setting the
AboutHandler
tonull
reverts it to the default behavior.- Parameters:
aboutHandler
- the handler to respond to theAboutHandler.handleAbout(AboutEvent)
message- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_ABOUT
action- Since:
- 9
-
setPreferencesHandler
public void setPreferencesHandler(PreferencesHandler preferencesHandler)
Installs a handler to show a custom Preferences window for your application.Setting the
PreferencesHandler
tonull
reverts it to the default behavior- Parameters:
preferencesHandler
- the handler to respond to thePreferencesHandler.handlePreferences(PreferencesEvent)
- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_PREFERENCES
action- Since:
- 9
-
setOpenFileHandler
public void setOpenFileHandler(OpenFilesHandler openFileHandler)
Installs the handler which is notified when the application is asked to open a list of files.- Implementation Note:
- Please note that for macOS, notifications
are only sent if the Java app is a bundled application,
with a
CFBundleDocumentTypes
array present in itsInfo.plist
. Check the Apple Developer Documentation for more information aboutInfo.plist
. - Parameters:
openFileHandler
- handler- Throws:
SecurityException
- if a security manager exists and itsSecurityManager.checkRead(java.lang.String)
method denies read access to the files, or it denies theRuntimePermission("canProcessApplicationEvents")
permission, or the calling thread is not allowed to create a subprocessUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_OPEN_FILE
action- Since:
- 9
-
setPrintFileHandler
public void setPrintFileHandler(PrintFilesHandler printFileHandler)
Installs the handler which is notified when the application is asked to print a list of files.- Implementation Note:
- Please note that for macOS, notifications
are only sent if the Java app is a bundled application,
with a
CFBundleDocumentTypes
array present in itsInfo.plist
. Check the Apple Developer Documentation for more information aboutInfo.plist
. - Parameters:
printFileHandler
- handler- Throws:
SecurityException
- if a security manager exists and itsSecurityManager.checkPrintJobAccess()
method denies the permission to print or it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_PRINT_FILE
action- Since:
- 9
-
setOpenURIHandler
public void setOpenURIHandler(OpenURIHandler openURIHandler)
Installs the handler which is notified when the application is asked to open a URL. Setting the handler tonull
causes allOpenURIHandler.openURI(OpenURIEvent)
requests to be enqueued until another handler is set.- Implementation Note:
- Please note that for macOS, notifications
are only sent if the Java app is a bundled application,
with a
CFBundleDocumentTypes
array present in itsInfo.plist
. Check the Apple Developer Documentation for more information aboutInfo.plist
. - Parameters:
openURIHandler
- handlerRuntimePermission("canProcessApplicationEvents")
permission, or the calling thread is not allowed to create a subprocess- Throws:
UnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_OPEN_URI
action- Since:
- 9
-
setQuitHandler
public void setQuitHandler(QuitHandler quitHandler)
Installs the handler which determines if the application should quit. The handler is passed a one-shotQuitResponse
which can cancel or proceed with the quit. Setting the handler tonull
causes all quit requests to directly perform the defaultQuitStrategy
.- Parameters:
quitHandler
- the handler that is called when the application is asked to quit- Throws:
SecurityException
- if a security manager exists and it will not allow the caller to invokeSystem.exit
or it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_QUIT_HANDLER
action- Since:
- 9
-
setQuitStrategy
public void setQuitStrategy(QuitStrategy strategy)
Sets the default strategy used to quit this application. The default is calling SYSTEM_EXIT_0.- Parameters:
strategy
- the way this application should be shutdown- Throws:
SecurityException
- if a security manager exists and it will not allow the caller to invokeSystem.exit
or it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_QUIT_STRATEGY
action- Since:
- 9
- See Also:
QuitStrategy
-
enableSuddenTermination
public void enableSuddenTermination()
Enables this application to be suddenly terminated. Call this method to indicate your application's state is saved, and requires no notification to be terminated. Letting your application remain terminatable improves the user experience by avoiding re-paging in your application when it's asked to quit. Note: enabling sudden termination will allow your application to be quit without notifying your QuitHandler, or running any shutdown hooks. E.g. user-initiated Cmd-Q, logout, restart, or shutdown requests will effectively "kill -KILL" your application.- Throws:
SecurityException
- if a security manager exists and it will not allow the caller to invokeSystem.exit
or it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_SUDDEN_TERMINATION
action- Since:
- 9
- See Also:
disableSuddenTermination()
-
disableSuddenTermination
public void disableSuddenTermination()
Prevents this application from being suddenly terminated. Call this method to indicate that your application has unsaved state, and may not be terminated without notification.- Throws:
SecurityException
- if a security manager exists and it will not allow the caller to invokeSystem.exit
or it denies theRuntimePermission("canProcessApplicationEvents")
permissionUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_SUDDEN_TERMINATION
action- Since:
- 9
- See Also:
enableSuddenTermination()
-
requestForeground
public void requestForeground(boolean allWindows)
Requests this application to move to the foreground.- Parameters:
allWindows
- if all windows of this application should be moved to the foreground, or only the foremost one- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permission.UnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_REQUEST_FOREGROUND
action- Since:
- 9
-
openHelpViewer
public void openHelpViewer()
Opens the native help viewer application.- Implementation Note:
- Please note that for Mac OS, it opens the native help viewer application if a Help Book has been added to the application bundler and registered in the Info.plist with CFBundleHelpBookFolder
- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permission, or it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocessUnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_HELP_VIEWER
action- Since:
- 9
-
setDefaultMenuBar
public void setDefaultMenuBar(JMenuBar menuBar)
Sets the default menu bar to use when there are no active frames.- Parameters:
menuBar
- to use when no other frames are active- Throws:
SecurityException
- if a security manager exists and it denies theRuntimePermission("canProcessApplicationEvents")
permission.UnsupportedOperationException
- if the current platform does not support theDesktop.Action.APP_MENU_BAR
action- Since:
- 9
-
browseFileDirectory
public void browseFileDirectory(File file)
Opens a folder containing thefile
and selects it in a default system file manager.- Parameters:
file
- the file- Throws:
SecurityException
- If a security manager exists and itsSecurityManager.checkRead(java.lang.String)
method denies read access to the file or to its parent, or it denies theAWTPermission("showWindowWithoutWarningBanner")
permission, or the calling thread is not allowed to create a subprocessUnsupportedOperationException
- if the current platform does not support theDesktop.Action.BROWSE_FILE_DIR
actionNullPointerException
- iffile
isnull
IllegalArgumentException
- if the specified file or its parent doesn't exist- Since:
- 9
-
moveToTrash
public boolean moveToTrash(File file)
Moves the specified file to the trash.- Parameters:
file
- the file- Returns:
- returns true if successfully moved the file to the trash.
- Throws:
SecurityException
- If a security manager exists and itsSecurityManager.checkDelete(java.lang.String)
method denies deletion of the fileUnsupportedOperationException
- if the current platform does not support theDesktop.Action.MOVE_TO_TRASH
actionNullPointerException
- iffile
isnull
IllegalArgumentException
- if the specified file doesn't exist- Since:
- 9
-
-