- java.lang.Object
-
- javafx.application.Application
-
- 已知直接子类:
-
Preloader
public abstract class Application extends Object
JavaFX应用程序扩展的应用程序类。生命周期
JavaFX应用程序的入口点是Application类。 无论何时启动应用程序,JavaFX运行时都会按顺序执行以下操作:
- 启动JavaFX运行时,如果尚未启动(有关详细信息,请参阅
Platform.startup(Runnable)
) - 构造指定的Application类的实例
- 调用
init()
方法 - 调用
start(javafx.stage.Stage)
方法 - 等待应用程序完成,发生以下任一情况时:
- 应用程序调用
Platform.exit()
- 最后一个窗口已关闭,
implicitExit
属性为Platform
- 应用程序调用
- 调用
stop()
方法
请注意,
start
方法是抽象的,必须被覆盖。init
和stop
方法具有不做任何事情的具体实现。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.MyApplication
在foo.app
模块中,则module-info.java
可能如下所示:module foo.app { exports com.foo to javafx.graphics; }
参数
应用参数都可以通过调用
getParameters()
从方法init()
方法,或之后的任何时间init
方法被调用。穿线
JavaFX创建一个应用程序线程,用于运行应用程序启动方法,处理输入事件和运行动画时间轴。 必须在JavaFX应用程序线程上创建JavaFX
Scene
和Stage
对象以及将场景图操作修改为活动对象(已连接到场景的对象)。Java启动器在JavaFX应用程序线程上加载并初始化指定的应用程序类。 如果Application类中没有主方法,或者主方法调用Application.launch()方法,则在JavaFX Application Thread上构建Application的实例。
在启动器线程上调用
init
方法,而不是在JavaFX应用程序线程上。 这意味着,应用程序必须不能构建一个Scene
或Stage
在init
方法。 应用程序可以在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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
Application.Parameters
封装一组应用程序的参数。
-
Field Summary
Fields Modifier and Type Field 描述 static String
STYLESHEET_CASPIAN
用于“Caspian”主题的用户代理样式表的常量。static String
STYLESHEET_MODENA
用于“Modena”主题的用户代理样式表的常量。
-
构造方法摘要
构造方法 Constructor 描述 Application()
构造一个新的Application
实例。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 HostServices
getHostServices()
获取此应用程序的HostServices提供程序。Application.Parameters
getParameters()
检索此应用程序的参数,包括在命令行上传递的任何参数以及Applet或WebStart应用程序的JNLP文件中指定的任何参数。static String
getUserAgentStylesheet()
获取整个应用程序使用的用户代理样式表。void
init()
应用程序初始化方法。static void
launch(Class<? extends Application> appClass, String... args)
启动独立应用程序。static void
launch(String... args)
启动独立应用程序。void
notifyPreloader(Preloader.PreloaderNotification info)
通过应用程序生成的通知通知预加载器。static void
setUserAgentStylesheet(String url)
设置整个应用程序使用的用户代理样式表。abstract void
start(Stage primaryStage)
所有JavaFX应用程序的主要入口点。void
stop()
当应用程序停止时,调用此方法,并为应用程序退出和销毁资源提供了便利的场所。
-
-
-
字段详细信息
-
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
-
-
方法详细信息
-
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
-
-