运行JavaFX应用程序:JFXPanel与Application.launch

时间:2015-06-09 07:05:06

标签: java javafx osgi javafx-8

我目前正在使用JavaFX执行大型Apache Felix应用程序,并怀疑在启动过程中该做什么。我做了一些实验,发现了在JavaFX环境中启动OSGi的两种可能方法。

第一种方法是通过执行某种JFXPanel()来使用JavaFX bootstrap。我没有嵌入Swing Applications这是初始化JavaFX Thread

public class JavaFXEnvironment {
    public static void start(){
        return new JFXPanel();
    }
}

我只需致电JavaFXEnvironment.start();,然后在JavaFX中使用我的Activator Bundle应用程序的启动方法。

Platform.runlater(() -> {
    new SampleApplication.start();
});

第二种方法是使用Application.start()方法。

public class SampleApplication extends Application {
     public void start(Stage stage) {
         ... /* Do JavaFX stuffs in here */
     }       
}

然后在Application.launch(...)中调用Activator Bundle

使用其中一种方法会产生什么影响?

即使我没有嵌入Swing Applications,使用JFXPanel也有任何不足之处吗?

1 个答案:

答案 0 :(得分:0)

我建议使用Application.launch,例如。在声明服务或激活器中启动它。你必须开始一个新的线程,因为这个呼叫是阻塞的。

使用JFXPanel会将Swing添加到混合中,可能还会添加Swing Event Dispatch Thread(EDT)。

请注意,我已经发布了一些早期版本的Drombler FX,这是一个基于OSGi(Apache Felix)和Maven(POM优先)的JavaFX新模块化应用程序框架。

您可以在此处详细了解Drombler FX:http://puces-blog.blogspot.ch/search/label/Drombler

这是一个Getting Started页面,通过几个简单的步骤解释了如何创建,构建和运行Drombler FX示例应用程序。