Module  javafx.graphics
软件包  javafx.application

Class Application

  • 已知直接子类:
    Preloader


    public abstract class Application
    extends Object
    JavaFX应用程序扩展的应用程序类。

    生命周期

    JavaFX应用程序的入口点是Application类。 无论何时启动应用程序,JavaFX运行时都会按顺序执行以下操作:

    1. 启动JavaFX运行时,如果尚未启动(有关详细信息,请参阅Platform.startup(Runnable)
    2. 构造指定的Application类的实例
    3. 调用init()方法
    4. 调用start(javafx.stage.Stage)方法
    5. 等待应用程序完成,发生以下任一情况时:
      • 应用程序调用Platform.exit()
      • 最后一个窗口已关闭, implicitExit属性为Platform
    6. 调用stop()方法

    请注意, start方法是抽象的,必须被覆盖。 initstop方法具有不做任何事情的具体实现。

    Application子类必须声明为public,并且必须有一个public no-argument构造函数。

    调用Platform.exit()是明确终止JavaFX应用程序的首选方式。 直接拨打System.exit(int)是可以接受的替代方案,但不允许应用程序运行stop()

    在FX工具包终止或ShutdownHook之后,即在stop()方法返回或调用System.exit(int)之后,JavaFX应用程序不应尝试使用JavaFX。

    将应用程序部署为模块

    如果Application子类在命名模块中,则该类必须可以访问javafx.graphics模块。 否则,在启动应用程序时将抛出异常。 这意味着除了该类本身被声明为公开外,该模块必须至少包含javafx.graphics模块的export (或open )包含的包。

    例如,如果com.foo.MyApplicationfoo.app模块中,则module-info.java可能如下所示:

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

    参数

    应用参数都可以通过调用getParameters()从方法init()方法,或之后的任何时间init方法被调用。

    穿线

    JavaFX创建一个应用程序线程,用于运行应用程序启动方法,处理输入事件和运行动画时间轴。 必须在JavaFX应用程序线程上创建JavaFX SceneStage对象以及将场景图操作修改为活动对象(已连接到场景的对象)。

    Java启动器在JavaFX应用程序线程上加载并初始化指定的应用程序类。 如果Application类中没有主方法,或者主方法调用Application.launch()方法,则在JavaFX Application Thread上构建Application的实例。

    在启动器线程上调用init方法,而不是在JavaFX应用程序线程上。 这意味着,应用程序必须不能构建一个SceneStageinit方法。 应用程序可以在init方法中构建其他JavaFX对象。

    在事件分派,运行动画时间轴或任何其他代码中发生的JavaFX应用程序线程上的所有未处理的异常都将转发到线程的uncaught exception handler

    以下示例将说明一个简单的JavaFX应用程序。

       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(); } }  

    以上示例将产生以下内容:

    场景左上角的一个黑色圆圈

    从以下版本开始:
    JavaFX 2.0
    另请参见:
    Platform
    • 字段详细信息

      • STYLESHEET_CASPIAN

        public static final String STYLESHEET_CASPIAN
        用于“Caspian”主题的用户代理样式表的常量。 Caspian是JavaFX 2.x中默认发行的主题。
        从以下版本开始:
        JavaFX 8.0
        另请参见:
        Constant Field Values
      • STYLESHEET_MODENA

        public static final String STYLESHEET_MODENA
        用于“Modena”主题的用户代理样式表的常量。 Modena是JavaFX 8.x的默认主题。
        从以下版本开始:
        JavaFX 8.0
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • Application

        public Application​()
        构造一个新的 Application实例。
    • 方法详细信息

      • launch

        public static void launch​(Class<? extends Application> appClass,
                                  String... args)
        启动独立应用程序。 这个方法通常从main()方法调用。 它不能多次被调用,或者抛出异常。

        通过调用Platform.exit或所有应用程序窗口都已关闭,启动方法不会返回,直到应用程序退出。 由指定的类appClass参数必须是一个公共子类Application与公共无参数构造,在一个包,是exported (或open )到至少javafx.graphics模块,或一个RuntimeException将被抛出。

        典型用途是:

          public static void main(String[] args) {
                 Application.launch(MyApp.class, args);
             } 
        其中MyApp是Application的子类。
        参数
        appClass - 由启动器构建和执行的应用程序类。
        args - 传递给应用程序的命令行参数。 应用程序可以使用getParameters()方法获取这些参数。
        异常
        IllegalStateException - 如果这个方法被调用不止一次。
        IllegalArgumentException -如果 appClass不是一个子类 Application
        RuntimeException - 如果启动JavaFX运行时出现错误,或者无法构造应用程序类(例如,如果类不是公开的或不在导出的包中),或者由Application构造函数抛出异常或错误,init方法,start方法或stop方法。
      • launch

        public static void launch​(String... args)
        启动独立应用程序。 这个方法通常从main()方法调用。 它不能多次被调用,或者抛出异常。 这相当于launch(TheClass.class, args) ,其中TheClass是即时封闭类的方法,称为启动。 它必须是Application的公共子类, Application包含公开无参数构造函数,至少为javafx.graphics模块的包为exported (或open ),否则将抛出RuntimeException。

        通过调用Platform.exit或所有应用程序窗口都已关闭,启动方法不会返回,直到应用程序退出。

        典型用途是:

          public static void main(String[] args) {
                 Application.launch(args);
             } 
        参数
        args - 传递给应用程序的命令行参数。 应用程序可以使用getParameters()方法获取这些参数。
        异常
        IllegalStateException - 如果这种方法被多次调用。
        RuntimeException - 如果启动JavaFX运行时出错,或者无法构造应用程序类(例如,如果类不是公开的或不在导出的包中),或者由Application构造函数抛出异常或错误,init方法,start方法或stop方法。
      • init

        public void init​()
                  throws 异常
        应用程序初始化方法。 在加载和构造Application类之后立即调用此方法。 应用程序可能会覆盖此方法,以在实际启动应用程序之前执行初始化。

        应用程序类提供的这种方法的实现什么都不做。

        注意:此方法不在JavaFX应用程序线程上调用。 应用程序不得在此方法中构造场景或舞台。 应用程序可以在此方法中构建其他JavaFX对象。

        异常
        异常 - 如果出现问题
      • start

        public abstract void start​(Stage primaryStage)
                            throws 异常
        所有JavaFX应用程序的主要入口点。 在init方法返回后,系统准备好应用程序开始运行之后调用start方法。

        注意:此方法在JavaFX应用程序线程上调用。

        参数
        primaryStage - 此应用程序的主要阶段,可以设置应用程序场景。 如果应用程序作为一个小程序启动,主阶段将嵌入到浏览器中。 如果需要,应用程序可能会创建其他阶段,但不会成为主要阶段,也不会嵌入在浏览器中。
        异常
        异常 - 如果出现问题
      • stop

        public void stop​()
                  throws 异常
        当应用程序停止时,调用此方法,并为应用程序退出和销毁资源提供了便利的场所。

        应用程序类提供的这种方法的实现什么都不做。

        注意:此方法在JavaFX应用程序线程上调用。

        异常
        异常 - 如果出现问题
      • getHostServices

        public final HostServices getHostServices​()
        获取此应用程序的HostServices提供程序。 这提供了获取此应用程序的代码库和文档库以及访问封闭网页的功能。
        结果
        HostServices提供商
      • getParameters

        public final Application.Parameters getParameters​()
        检索此应用程序的参数,包括在命令行上传递的任何参数以及Applet或WebStart应用程序的JNLP文件中指定的任何参数。

        注意:该方法不应该从Application构造函数调用,因为它将返回null。 它可以在init()方法中或之后的任何时间调用。

        结果
        此应用程序的参数,如果从构造函数调用,则为null。
      • notifyPreloader

        public final void notifyPreloader​(Preloader.PreloaderNotification info)
        通过应用程序生成的通知通知预加载器。 应用程序代码使用PreloaderNotification调用此方法,并将其传递给Preloader.handleApplicationNotification方法。 这对于应用程序希望预加载程序在长应用程序初始化步骤期间显示进度的情况主要有用。

        注意:通知只会传递给预加载器的handleApplicationNotification()方法; 这意味着,例如,如果使用ProgressNotification调用此方法,该通知将不会传递到Preloader.handleProgressNotification方法。

        参数
        info - 应用程序生成的预加载程序通知
      • getUserAgentStylesheet

        public static String getUserAgentStylesheet​()
        获取整个应用程序使用的用户代理样式表。 这用于为所有ui控件和其他节点提供默认样式。 值为null表示正在使用平台默认样式表。

        注意:必须在JavaFX应用程序线程上调用此方法。

        结果
        作为字符串的样式表的URL。
        从以下版本开始:
        JavaFX 8.0
      • setUserAgentStylesheet

        public static void setUserAgentStylesheet​(String url)
        设置整个应用程序使用的用户代理样式表。 这用于为所有ui控件和其他节点提供默认样式。 每个版本的JavaFX可能都有一个新的默认值,所以如果你需要保证一致性,你需要调用这个方法,并选择你想要的应用程序的默认值。 null值将恢复平台默认样式表。 也可以在命令行上设置此属性,其中-Djavafx.userAgentStylesheetUrl=[URL]在命令行中设置它将覆盖在代码中使用此方法设置的任何内容。

        注意:必须在JavaFX应用程序线程上调用此方法。

        参数
        url - 样式表的URL作为字符串。
        从以下版本开始:
        JavaFX 8.0