Class Application
- Direct Known Subclasses:
OpenJFXWebFxKitLauncherProvider.FxKitWrapperApplication
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:
- 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 start method is abstract and must be overridden.
The init and stop methods have concrete implementations
that do nothing.
Calling Platform.exit() is the preferred way to explicitly terminate
a JavaFX Application. Directly calling System.exit(int) is
an acceptable alternative, but doesn't allow the Application stop()
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 or System.exit(int) is called.
Parameters
Application parameters are available by calling the getParameters()
method from the init() method, or any time after the init
method 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 Scene and Stage objects 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 init method is called on the launcher thread, not on the
JavaFX Application Thread.
This means that an application must not construct a Scene
or a Stage in the init method.
An application may construct other JavaFX objects in the init
method.
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classEncapsulates the set of parameters for an application. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal HostServicesGets the HostServices provider for this application.final Application.ParametersRetrieves the parameters for this Application, including any arguments passed on the command line and any parameters specified in a JNLP file for an applet or WebStart application.voidinit()The application initialization method.static voidlaunch(Class<? extends Application> appClass, String... args) Launch a standalone application.static voidLaunch a standalone application.abstract voidThe 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.
-
Constructor Details
-
Application
public Application()Constructs a newApplicationinstance.
-
-
Method Details
-
launch
Launch a standalone application. This method is typically called from the main method(). 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.
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 thegetParameters()method.- Throws:
IllegalStateException- if this method is called more than once.IllegalArgumentException- ifappClassis not a subclass ofApplication.
-
launch
Launch a standalone application. This method is typically called from the main method(). It must not be called more than once or an exception will be thrown. This is equivalent to launch(TheClass.class, args) where TheClass is the immediately enclosing class of the method that called launch. It must be a subclass of Application 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 thegetParameters()method.- Throws:
IllegalStateException- if this method is called more than once.
-
init
The 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
-
start
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. The primary stage will be embedded in the browser if the application was launched as an applet. Applications may create other stages, if needed, but they will not be primary stages and will not be embedded in the browser.- Throws:
Exception
-
stop
This 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
-
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 access the enclosing web page.- Returns:
- the HostServices provider
-
getParameters
Retrieves the parameters for this Application, including any arguments passed on the command line and any parameters specified in a JNLP file for an applet or WebStart application.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.
-