- java.lang.Object
- 
- javafx.application.Application
 
- 
- Direct Known Subclasses:
- Preloader
 
 public abstract class Application extends Object Application class from which JavaFX applications extend.Life-cycle The entry point for JavaFX applications is the Application class. The JavaFX runtime does the following, in order, whenever an application is launched: - Starts the JavaFX runtime, if not already started
 (see Platform.startup(Runnable)for more information)
- Constructs an instance of the specified Application class
- Calls the init()method
- Calls the start(javafx.stage.Stage)method
- Waits for the application to finish, which happens when either of
 the following occur:
 - the application calls Platform.exit()
- the last window has been closed and the implicitExitattribute onPlatformis true
 
- the application calls 
- Calls the stop()method
 Note that the startmethod is abstract and must be overridden. Theinitandstopmethods have concrete implementations that do nothing.The Applicationsubclass must be declared public and must have a public no-argument constructor.Calling Platform.exit()is the preferred way to explicitly terminate a JavaFX Application. Directly callingSystem.exit(int)is an acceptable alternative, but doesn't allow the Applicationstop()method to run.A JavaFX Application should not attempt to use JavaFX after the FX toolkit has terminated or from a ShutdownHook, that is, after the stop()method returns orSystem.exit(int)is called.Deploying an Application as a Module If the Applicationsubclass is in a named module then that class must be accessible to thejavafx.graphicsmodule. Otherwise, an exception will be thrown when the application is launched. This means that in addition to the class itself being declared public, the module mustexport(oropen) the containing package to at least thejavafx.graphicsmodule.For example, if com.foo.MyApplicationis in thefoo.appmodule, themodule-info.javamight look like this:module foo.app { exports com.foo to javafx.graphics; }Parameters Application parameters are available by calling the getParameters()method from theinit()method, or any time after theinitmethod has been called.Threading JavaFX creates an application thread for running the application start method, processing input events, and running animation timelines. Creation of JavaFX SceneandStageobjects as well as modification of scene graph operations to live objects (those objects already attached to a scene) must be done on the JavaFX application thread.The Java launcher loads and initializes the specified Application class on the JavaFX Application Thread. If there is no main method in the Application class, or if the main method calls Application.launch(), then an instance of the Application is then constructed on the JavaFX Application Thread. The initmethod is called on the launcher thread, not on the JavaFX Application Thread. This means that an application must not construct aSceneor aStagein theinitmethod. An application may construct other JavaFX objects in theinitmethod.All the unhandled exceptions on the JavaFX application thread that occur during event dispatching, running animation timelines, or any other code, are forwarded to the thread's uncaught exception handler.Example The following example will illustrate a simple JavaFX application. import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class MyApp extends Application { public void start(Stage stage) { Circle circ = new Circle(40, 40, 30); Group root = new Group(circ); Scene scene = new Scene(root, 400, 300); stage.setTitle("My JavaFX Application"); stage.setScene(scene); stage.show(); } }The above example will produce the following:  - Since:
- JavaFX 2.0
- See Also:
- Platform
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classApplication.ParametersEncapsulates the set of parameters for an application.
 - 
Field SummaryFields Modifier and Type Field Description static StringSTYLESHEET_CASPIANConstant for user agent stylesheet for the "Caspian" theme.static StringSTYLESHEET_MODENAConstant for user agent stylesheet for the "Modena" theme.
 - 
Constructor SummaryConstructors Constructor Description Application()Constructs a newApplicationinstance.
 - 
Method SummaryModifier and Type Method Description HostServicesgetHostServices()Gets the HostServices provider for this application.Application.ParametersgetParameters()Retrieves the parameters for this Application, including any arguments passed on the command line.static StringgetUserAgentStylesheet()Get the user agent stylesheet used by the whole application.voidinit()The application initialization method.static voidlaunch(Class<? extends Application> appClass, String... args)Launch a standalone application.static voidlaunch(String... args)Launch a standalone application.voidnotifyPreloader(Preloader.PreloaderNotification info)Notifies the preloader with an application-generated notification.static voidsetUserAgentStylesheet(String url)Set the user agent stylesheet used by the whole application.abstract voidstart(Stage primaryStage)The main entry point for all JavaFX applications.voidstop()This method is called when the application should stop, and provides a convenient place to prepare for application exit and destroy resources.
 
- 
- 
- 
Field Detail- 
STYLESHEET_CASPIANpublic static final String STYLESHEET_CASPIAN Constant for user agent stylesheet for the "Caspian" theme. Caspian is the theme that shipped as default in JavaFX 2.x.- Since:
- JavaFX 8.0
- See Also:
- Constant Field Values
 
 - 
STYLESHEET_MODENApublic static final String STYLESHEET_MODENA Constant for user agent stylesheet for the "Modena" theme. Modena is the default theme for JavaFX 8.x.- Since:
- JavaFX 8.0
- See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
launchpublic static void launch(Class<? extends Application> appClass, String... args) Launch a standalone application. This method is typically called from themainmethod. It must not be called more than once or an exception will be thrown.The launch method does not return until the application has exited, either via a call to Platform.exit()or all of the application windows have been closed. The class specified by theappClassargument must be a public subclass ofApplicationwith a public no-argument constructor, in a package that isexported(oropen) to at least thejavafx.graphicsmodule, or a RuntimeException will be thrown.Typical usage is: public static void main(String[] args) { Application.launch(MyApp.class, args); }whereMyAppis a subclass of Application.- Parameters:
- appClass- the application class that is constructed and executed by the launcher.
- args- the command line arguments passed to the application. An application may get these parameters using the- getParameters()method.
- Throws:
- IllegalStateException- if this method is called more than once.
- IllegalArgumentException- if- appClassis not a subclass of- Application.
- RuntimeException- if there is an error launching the JavaFX runtime, or if the application class cannot be constructed (e.g., if the class is not public or is not in an exported package), or if an Exception or Error is thrown by the Application constructor, init method, start method, or stop method.
 
 - 
launchpublic static void launch(String... args) Launch a standalone application. This method is typically called from themainmethod. It must not be called more than once or an exception will be thrown. This is equivalent tolaunch(TheClass.class, args)whereTheClassis the immediately enclosing class of the method that called launch. It must be a public subclass ofApplicationwith a public no-argument constructor, in a package that isexported(oropen) to at least thejavafx.graphicsmodule, or a RuntimeException will be thrown.The launch method does not return until the application has exited, either via a call to Platform.exit()or all of the application windows have been closed.Typical usage is: public static void main(String[] args) { Application.launch(args); }- Parameters:
- args- the command line arguments passed to the application. An application may get these parameters using the- getParameters()method.
- Throws:
- IllegalStateException- if this method is called more than once.
- RuntimeException- if there is an error launching the JavaFX runtime, or if the application class cannot be constructed (e.g., if the class is not public or is not in an exported package), or if an Exception or Error is thrown by the Application constructor, init method, start method, or stop method.
 
 - 
initpublic void init() throws ExceptionThe application initialization method. This method is called immediately after the Application class is loaded and constructed. An application may override this method to perform initialization prior to the actual starting of the application.The implementation of this method provided by the Application class does nothing. NOTE: This method is not called on the JavaFX Application Thread. An application must not construct a Scene or a Stage in this method. An application may construct other JavaFX objects in this method. - Throws:
- Exception- if something goes wrong
 
 - 
startpublic abstract void start(Stage primaryStage) throws Exception The main entry point for all JavaFX applications. The start method is called after the init method has returned, and after the system is ready for the application to begin running.NOTE: This method is called on the JavaFX Application Thread. - Parameters:
- primaryStage- the primary stage for this application, onto which the application scene can be set. Applications may create other stages, if needed, but they will not be primary stages.
- Throws:
- Exception- if something goes wrong
 
 - 
stoppublic void stop() throws ExceptionThis method is called when the application should stop, and provides a convenient place to prepare for application exit and destroy resources.The implementation of this method provided by the Application class does nothing. NOTE: This method is called on the JavaFX Application Thread. - Throws:
- Exception- if something goes wrong
 
 - 
getHostServicespublic final HostServices getHostServices() Gets the HostServices provider for this application. This provides the ability to get the code base and document base for this application, and to show a web page in a browser.- Returns:
- the HostServices provider
 
 - 
getParameterspublic final Application.Parameters getParameters() Retrieves the parameters for this Application, including any arguments passed on the command line.NOTE: this method should not be called from the Application constructor, as it will return null. It may be called in the init() method or any time after that. - Returns:
- the parameters for this Application, or null if called from the constructor.
 
 - 
notifyPreloaderpublic final void notifyPreloader(Preloader.PreloaderNotification info) Notifies the preloader with an application-generated notification. Application code calls this method with a PreloaderNotification that is delivered to thePreloader.handleApplicationNotificationmethod. This is primarily useful for cases where an application wants the preloader to show progress during a long application initialization step.NOTE: the notification will be delivered only to the preloader's handleApplicationNotification() method; this means, for example, that if this method is called with a ProgressNotification, that notification will not be delivered to the Preloader.handleProgressNotificationmethod.- Parameters:
- info- the application-generated preloader notification
 
 - 
getUserAgentStylesheetpublic static String getUserAgentStylesheet() Get the user agent stylesheet used by the whole application. This is used to provide default styling for all ui controls and other nodes. A value of null means the platform default stylesheet is being used.NOTE: This method must be called on the JavaFX Application Thread. - Returns:
- The URL to the stylesheet as a String.
- Since:
- JavaFX 8.0
 
 - 
setUserAgentStylesheetpublic static void setUserAgentStylesheet(String url) Set the user agent stylesheet used by the whole application. This is used to provide default styling for all ui controls and other nodes. Each release of JavaFX may have a new default value for this so if you need to guarantee consistency you will need to call this method and choose what default you would like for your application. A value of null will restore the platform default stylesheet. This property can also be set on the command line with-Djavafx.userAgentStylesheetUrl=[URL]Setting it on the command line overrides anything set using this method in code.NOTE: This method must be called on the JavaFX Application Thread. - Parameters:
- url- The URL to the stylesheet as a String.
- Since:
- JavaFX 8.0
 
 
- 
 
-