如何在使用javafx时获取应用程序实例?
通常以这种方式启动应用程序:
public class LoginForm {
public static void main(String[] args) {
LoginApplication.launch(LoginApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
方法启动不返回应用程序实例.有没有办法让我得到实例?
JavaFX的Hello World-Tutorial说:
当使用 JavaFX Packager 工具创建应用程序的 JAR 文件时,JavaFX 应用程序不需要 main() 方法,该工具将 JavaFX Launcher 嵌入 JAR 文件中。但是,包含 main() 方法很有用,因此您可以运行在没有 JavaFX Launcher 的情况下创建的 JAR 文件,例如在使用未完全集成 JavaFX 工具的 IDE 时。此外,嵌入 JavaFX 代码的 Swing 应用程序需要 main() 方法。
我试过了,这是真的,我可以在没有main方法的情况下启动我的应用程序。
但是,当我从类中声明一个main方法调用时,该程序仍然有效。Application的文档说,JavaFX 运行时正在创建类的实例并调用该方法。launchApplicationApplicationinit
但是 JavaFX 运行时是如何启动的呢?我的意思是必须在main某处有一种方法,才能开始一切。所以我想知道我是否自己声明了一个main方法,不是有两个吗?
我写了一个小测试应用程序,看起来像这样:
import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.Stage;
public class Test extends Application {
public Test() {
System.out.println("first");
}
@Override
public void init() throws Exception {
System.out.println("second");
super.init();
}
@Override
public void start(Stage primaryStage) throws Exception {
System.out.println("third");
Platform.exit();
}
@Override
public void stop() throws Exception {
System.out.println("fourth");
super.stop();
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
first
second
third
fourth
Run Code Online (Sandbox Code Playgroud)
现在,我问自己使用默认构造函数或init初始化一些必需事物的方法之间的区别.
谢谢!
PS:这个问题是不是有重复的这一个,因为我的问题不处理的变量初始化.我的问题是JavaFX具体的!
该材料在第10页上说,可以在不编写的情况下运行JavaFX应用程序main.我想有一些预定义的main内部jfxrt.jar,它寻找一个扩展Application和运行它的类.
是这样吗?怎么做?