首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iPOJO应用程序中使用JavaFX

在iPOJO应用程序中使用JavaFX
EN

Stack Overflow用户
提问于 2015-02-03 01:34:54
回答 1查看 268关注 0票数 1

我正在Apache Felix中做一个Apache Felix应用程序,并使用iPOJO进行一些实验。

首先是在不同的类中调用Application.launch()方法,然后启动另一个包含iPOJO @Requires的类,如下所示:

代码语言:javascript
复制
public class JavafxApp extends Application {
    @Override
    public void start(Stage primaryStage){
        /* Do nothing here because I thought I can initialize JavaFX in a different class */
    }

    public static void start(){
        Platform.runLater(() -> {
            launch(JavafxApplication.class);
        });
    }
}


@Component
@Instantiate
public class MyApplication {
    @Requires
    LibraryClass class;

    @Validate
    public void start(){
        JavafxApp.start();
        class.someMethod();
    }

}

此实现抛出此异常,java.lang.IllegalStateException: Toolkit not initialized,但iPOJO定位了LibraryClass接口的实现类。

经过一些研究,我发现应用程序应该在扩展javafx.application.Application的类中,所以我进行了一些重构。

代码语言:javascript
复制
@Component
@Instantiate
public class JavafxApp extends Application {

    @Requires
    LibraryClass class;

    @Override
    public void start(Stage primaryStage){
        class.someMethod();
    }

    @Validate
    public void start(){
        launch(JavafxApp.class);
    }

}

编辑

LibraryClass接口和实现:

代码语言:javascript
复制
@Component
@Provides
@Instantiate
public class LibraryClassImplementation implements LibraryClass {

    public void someMethod(){
        system.out.println("Hello Javafx using iPOJO");
    }

}

public interface LibraryClass {
    public void someMethod();
}

现在,iPOJO抛出一个RuntimeExceptionLibraryClass变成null,应用程序抛出一个NullPointerException

我的问题是:

  • 在这种情况下可以使用iPOJO吗?
  • 如果是的话,在iPOJO应用程序中使用JavaFX的正确方法是什么?

提前谢谢!:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-10 08:55:17

JavaFX应用程序实例必须由JavaFX平台使用应用程序类的静态启动方法之一创建。AFAIK不可能像iPOJO这样的其他框架实例化类。然而,在第二个实现中,您用一些iPOJO (?)对应用程序进行了注释。注释,这将创建类的一个实例,我猜。但是它是启动方法,它应该创建应用程序实例,而不是框架。

在第一个实现中,您试图调用JavaFX应用程序线程中的启动方法。但是它是启动JavaFX平台和JavaFX应用线程的启动方法。还请注意,在应用程序退出之前,启动方法不会返回。

尽管如此,请注意,我已经发布了德罗巴勒FX的一些早期访问版本,这是一个新的基于OSGi (Apache )和Maven的JavaFX富客户端平台。

作为一个应用程序框架,它确保JavaFX和OSGi能够正确启动,并提供主窗口。

您可以在这里阅读更多关于Drombler的内容:http://puces-blog.blogspot.ch/search/label/Drombler

到目前为止,我使用的是声明性服务(由Apache Felix SCR注释生成),但我想也可以将iPOJO用于新服务。

有一个快速入门页面解释了如何创建、构建和运行一个Drombler示例应用程序,只需几个简单的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28289948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档