繁体   English   中英

在普通的Java应用程序中创建JavaFX主阶段

[英]Create a JavaFX primary stage inside a normal Java application

我有一个启动器和一个JavaFX类。 启动程序将创建一个名为JavaFXApplication1的类。 JavaFXApplication包含整个JavaFX代码(在这种情况下仅是一个示例),并且应设置一个具有一个主要阶段的窗口。

启动器具有静态的主入口点-但我读到JavaFX并没有真正使用此入口点。 这解释了我的控制台输出(请参阅文章末尾)

我不知道这是否可行(Launcher创建JavaFX窗口-入口点不在 presentation类本身中)。 我不想使用预加载器(我认为预加载器仅在启动时用于重负载),因为启动器将整个程序表示为一个对象(演示,业务和持久性-3层程序)。 入口点应位于表示形式类之外(在此示例中为启动器类)

以下示例确实有效。 但是对我来说,就像一块“黑魔法”

这是我的代码

启动器:

package javafxapplication1;

public class Launcher
{
    public static void main(String[] args)
    {
        System.out.println("main()");

        // Do some stuff and then create the UI class

        JavaFXApplication1 client = new JavaFXApplication1();
        client.caller(args);
    }
}

JavaFXApplication1:

package javafxapplication1;

import javafx.application.Application;
import javafx.stage.Stage;

public class JavaFXApplication1 extends Application
{ 
    @Override
    public void start(Stage primaryStage)
    {
        System.out.println("start()");
        primaryStage.setTitle("I am a JavaFX app");
        primaryStage.show();
    }

    public void caller(String[] args)
    {
        System.out.println("caller()");
        launch(args);
    }
    /* We call the main function from the client
    public static void main(String[] args)
    {
        launch(args);
    }*/
}

该程序的输出为:

start()

有没有办法创建这样的应用程序? 谢谢

这个问题的答案是创建一个Java项目而不是JavaFX项目。 之后,您可以添加JavaFX主类并编写一个方法(调用launch())。

也许您必须从​​/ jdk _ * / jre / lib目录中添加编译时库deploy.jar,javaws.jar,jfxrt.jar和plugin.jar

我在MacDevign类的主要方法中的Running JavaFX Application实例上写了一篇文章。

可能是您要找的东西吗?

代码很长,因此最好参考该文章,但是用法很简单。 请注意,init和stop方法不使用启动器线程,因此请谨慎使用。

目的是在您的类的主要方法上运行虚拟javafx应用程序,以进行快速测试/实验。

要使用此功能,只需在使用lambda的main方法中添加以下内容,或者可以使用匿名内部类样式。

// using the start method of Application class
Utility.launchApp((app, stage) -> {
    // javafx code
}, arArgs);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM