Top Description Inners Fields Constructors Methods
javafx.application

public abstract Class Application

extends Object
Class Inheritance
Known Direct Subclasses
javafx.application.Preloader
Imports
java.io.File, java.util.List, .Map, javafx.application.Preloader.PreloaderNotification, javafx.css.Stylesheet, javafx.scene.Scene, javafx.stage.Stage, com.sun.javafx.application.LauncherImpl, .ParametersImpl, .PlatformImpl

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:

  1. Starts the JavaFX runtime, if not already started (see Platform#startup(Runnable) for more information)
  2. Constructs an instance of the specified Application class
  3. Calls the init method
  4. Calls the start method
  5. 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 implicitExit attribute on Platform is true
  6. 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.

The Application subclass 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 calling System#exit 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 is called.

Note

The JavaFX classes must be loaded from a set of named javafx.* modules on the module path. Loading the JavaFX classes from the classpath is not supported. See Platform.startup for more information.

Deploying an Application as a Module

If the Application subclass is in a named module then that class must be accessible to the javafx.graphics module. 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 must export (or open) the containing package to at least the javafx.graphics module.

For example, if com.foo.MyApplication is in the foo.app module, the module-info.java might look like this:

module foo.app {
    exports com.foo to javafx.graphics;
}

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:

A black circle in the top left
 corner of scene

Since
JavaFX 2.0
See Also
Platform

Nested and Inner Type Summary

Modifier and TypeClass and Description
public abstract static class
Application.Parameters

Encapsulates the set of parameters for an application.

Field Summary

Modifier and TypeField and Description
private HostServices
public static final String
STYLESHEET_CASPIAN

Constant for user agent stylesheet for the "Caspian" theme.

public static final String
STYLESHEET_MODENA

Constant for user agent stylesheet for the "Modena" theme.

private static String

Constructor Summary

AccessConstructor and Description
public
Application()

Constructs a new Application instance.

Method Summary

Modifier and TypeMethod and Description
public final HostServices

Returns:

the HostServices provider
getHostServices
()

Gets the HostServices provider for this application.

public final Application.Parameters

Returns:

the parameters for this Application, or null if called from the constructor.
getParameters
()

Retrieves the parameters for this Application, including any arguments passed on the command line.

public static String

Returns:

The URL to the stylesheet as a String.
getUserAgentStylesheet
()

Get the user agent stylesheet used by the whole application.

public void
init()

The application initialization method.

public static void
launch(Class<? extends Application>
the application class that is constructed and executed by the launcher.
appClass
,
String...
the command line arguments passed to the application. An application may get these parameters using the getParameters() method.
args
)

Launch a standalone application.

public static void
launch(String...
the command line arguments passed to the application. An application may get these parameters using the getParameters() method.
args
)

Launch a standalone application.

public final void
notifyPreloader(Preloader.PreloaderNotification
the application-generated preloader notification
info
)

Notifies the preloader with an application-generated notification.

public static void
setUserAgentStylesheet(String
The URL to the stylesheet as a String.
url
)

Set the user agent stylesheet used by the whole application.

public abstract void
start(Stage
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.
primaryStage
)

The main entry point for all JavaFX applications.

public void
stop()

This method is called when the application should stop, and provides a convenient place to prepare for application exit and destroy resources.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

hostServicesback to summary
private HostServices hostServices
STYLESHEET_CASPIANback to summary
public 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
STYLESHEET_MODENAback to summary
public 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
userAgentStylesheetback to summary
private static String userAgentStylesheet

Constructor Detail

Applicationback to summary
public Application()

Constructs a new Application instance.

Method Detail

getHostServicesback to summary
public 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:HostServices

the HostServices provider

getParametersback to summary
public 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:Application.Parameters

the parameters for this Application, or null if called from the constructor.

getUserAgentStylesheetback to summary
public 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:String

The URL to the stylesheet as a String.

Since
JavaFX 8.0
initback to summary
public void init() throws Exception

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.

Exceptions
Exception:
if something goes wrong
launchback to summary
public static void launch(Class<? extends Application> appClass, String... args)

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. The class specified by the appClass argument must be a public subclass of Application with a public no-argument constructor, in a package that is exported (or open) to at least the javafx.graphics module, or a RuntimeException will be thrown.

Typical usage is:

    public static void main(String[] args) {
        Application.launch(MyApp.class, args);
    }
where MyApp is a subclass of Application.
Parameters
appClass:Class<? extends Application>

the application class that is constructed and executed by the launcher.

args:String[]

the command line arguments passed to the application. An application may get these parameters using the getParameters() method.

Exceptions
IllegalStateException:
  • if this method is called more than once.
  • if this method is called from the JavaFX application thread.
IllegalArgumentException:
if appClass is 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.
launchback to summary
public static void launch(String... args)

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 public subclass of Application with a public no-argument constructor, in a package that is exported (or open) to at least the javafx.graphics module, 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:String[]

the command line arguments passed to the application. An application may get these parameters using the getParameters() method.

Exceptions
IllegalStateException:
  • if this method is called more than once.
  • if this method is called from the JavaFX application thread.
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.
notifyPreloaderback to summary
public 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 the Preloader.handleApplicationNotification method. 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.handleProgressNotification method.

Parameters
info:Preloader.PreloaderNotification

the application-generated preloader notification

setUserAgentStylesheetback to summary
public 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.

The URL is a hierarchical URI of the form [scheme:][//authority][path]. If the URL does not have a [scheme:] component, the URL is considered to be the [path] component only. Any leading '/' character of the [path] is ignored and the [path] is treated as a path relative to the root of the application's classpath.

The RFC 2397 "data" scheme for URLs is supported in addition to the protocol handlers that are registered for the application. If a URL uses the "data" scheme and the MIME type is either empty, "text/plain", or "text/css", the payload will be interpreted as a CSS file. If the MIME type is "application/octet-stream", the payload will be interpreted as a binary CSS file (see Stylesheet#convertToBinary(File, File)).

Note

This method must be called on the JavaFX Application Thread.

Parameters
url:String

The URL to the stylesheet as a String.

Since
JavaFX 8.0
startback to summary
public 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:Stage

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.

Exceptions
Exception:
if something goes wrong
stopback to summary
public void stop() throws Exception

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.

Exceptions
Exception:
if something goes wrong
javafx.application back to summary

public abstract Class Application.Parameters

extends Object
Class Inheritance
Known Direct Subclasses
com.sun.javafx.application.ParametersImpl

Encapsulates the set of parameters for an application. This includes arguments passed on the command line.

Note that the application and the preloader both get the same set of parameters for a given run of an application.

Since
JavaFX 2.0

Constructor Summary

AccessConstructor and Description
public
Parameters()

Constructs a new Parameters instance.

Method Summary

Modifier and TypeMethod and Description
public abstract Map<String, String>

Returns:

a read-only map of named parameters.
getNamed
()

Retrieves a read-only map of the named parameters.

public abstract List<String>

Returns:

a read-only list of raw application arguments
getRaw
()

Retrieves a read-only list of the raw arguments.

public abstract List<String>

Returns:

a read-only list of unnamed parameters.
getUnnamed
()

Retrieves a read-only list of the unnamed parameters.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

Parametersback to summary
public Parameters()

Constructs a new Parameters instance.

Method Detail

getNamedback to summary
public abstract Map<String, String> getNamed()

Retrieves a read-only map of the named parameters. It may be empty, but is never null. Named parameters include any command line arguments of the form: "--name=value".

Returns:Map<String, String>

a read-only map of named parameters.

getRawback to summary
public abstract List<String> getRaw()

Retrieves a read-only list of the raw arguments. This list may be empty, but is never null. In the case of a standalone application, it is the ordered list of arguments specified on the command line. For named parameters, each <name,value> pair is represented as a single argument of the form: "--name=value".

Returns:List<String>

a read-only list of raw application arguments

getUnnamedback to summary
public abstract List<String> getUnnamed()

Retrieves a read-only list of the unnamed parameters. This list may be empty, but is never null. The named parameters, that is the parameters that are represented as <name,value> pairs, are filtered out.

Returns:List<String>

a read-only list of unnamed parameters.