< prev index next >
modules/graphics/src/main/java/javafx/application/Platform.java
Print this page
rev 9394 : imported patch 8090585-platform-startup
@@ -39,10 +39,68 @@
// To prevent instantiation
private Platform() {
}
/**
+ * This method starts the JavaFX runtime. The specified Runnable will then be
+ * called on the JavaFX Application Thread. In general it is not necessary to
+ * explicitly call this method, since it is invoked as a consequence of
+ * how most JavaFX applications are built. However there are valid use cases
+ * for calling this method directly. Because this method starts the JavaFX
+ * runtime, there is not yet any JavaFX Application Thread, so it is normal
+ * that this method is called directly on the main thread of the application.
+ *
+ * <p>
+ * This method may or may not return to the caller before the run method
+ * of the specified Runnable has been called. In any case, once this method
+ * returns, you may call {@link #runLater} with additional Runnables.
+ * Those Runnables will be called, also on the JavaFX Application Thread,
+ * after the Runnable passed into this method has been called.
+ * </p>
+ *
+ * <p>As noted, it is normally the case that the JavaFX Application Thread
+ * is started automatically. It is important that this method only be called
+ * when the JavaFX runtime has not yet been initialized. Situations where
+ * the JavaFX runtime is started automatically include:
+ * </p>
+ *
+ * <ul>
+ * <li>For standard JavaFX applications that extend {@link Application}, and
+ * use either the Java launcher or one of the launch methods in the
+ * Application class to launch the application, the FX runtime is
+ * initialized automatically by the launcher before the Application
+ * class is loaded.</li>
+ * <li>For Swing applications that use JFXPanel to display FX content, the
+ * FX runtime is initialized when the first JFXPanel instance is
+ * constructed.</li>
+ * <li>For SWT application that use FXCanvas to display FX content, the FX
+ * runtime is initialized when the first FXCanvas instance is
+ * constructed.</li>
+ * </ul>
+ *
+ * <p>When an application does not follow any of these common approaches,
+ * then it becomes the responsibility of the developer to manually start the
+ * JavaFX runtime by calling this startup method.
+ * </p>
+ *
+ * <p>Calling this method when the JavaFX runtime is already running will result in an
+ * {@link IllegalStateException} being thrown - it is only valid to request
+ * that the JavaFX runtime be started once.
+ * </p>
+ *
+ * @throws IllegalStateException if the JavaFX runtime is already running
+ *
+ * @param runnable the Runnable whose run method will be executed on the
+ * JavaFX Application Thread once it has been started.
+ *
+ * @since 9
+ */
+ public static void startup(Runnable runnable) {
+ PlatformImpl.startup(runnable, true);
+ }
+
+ /**
* Run the specified Runnable on the JavaFX Application Thread at some
* unspecified
* time in the future. This method, which may be called from any thread,
* will post the Runnable to an event queue and then return immediately to
* the caller. The Runnables are executed in the order they are posted.
@@ -71,10 +129,13 @@
* class is loaded.
* For Swing applications that use JFXPanel to display FX content, the FX
* runtime is initialized when the first JFXPanel instance is constructed.
* For SWT application that use FXCanvas to display FX content, the FX
* runtime is initialized when the first FXCanvas instance is constructed.
+ * For applications that do not follow any of these approaches, then it is
+ * necessary to manually start the JavaFX runtime by calling
+ * {@link #startup(Runnable)} once.
* </p>
*
* @param runnable the Runnable whose run method will be executed on the
* JavaFX Application Thread
*
< prev index next >