在JavaFX 发布之后本人撰写的文章JavaFX和Java之间的互操作性被各网站转载文中总结了种从Java调用JavaFX的方法这三种方法分别为:
用ScriptEngineManager类这是基于JSR规范的java脚本API( scripting API)可以在java程序中运行一些脚本如 JavaFX script javascript等
通过JavaFX reflection API这是JavaFX提供的反射API几乎可以调用所有的JavaFX类
先用JavaFX类实现一个Java的interface然后Java程序可以通过这个interface来调用JavaFX的功能这中间的interface起了个桥梁的作用
第三种方法应该是比较正规而且优美的调用方式但是也有一点不足程序代码的入口必须从JavaFX启动这是因为JavaFX程序比较容易生成JavaFX类的实例从而可以供Java方使用可是我们有时会碰到一些特定的情况需要从Java端启动代码例如如果你已经有了一个较完整的Java程序你需要用调用JavaFX的某些功能这时候较好的方法是把Java作为程序的入口为了解决这个问题我把第和第种方法作了融合大家可以看看下面的例子纯Java代码调用JavaFX的例子
下一步是创建JavaFX类MyChart来实现这个interface:
在代码中这句是创建JavaFX类javatestMyChart实例
Context context = FXLocalgetContext(); FXClassType instance = contextfindClass(javatestMyChart); ObjectValue obj = (ObjectValue)instancenewInstance();
而一下这句则是把JavaFX实例转化为Java可用的对象
JavaInterface ji = (JavaInterface)objasObject();
如果你用的是NetBeans IDE 你可以在项目属性中把javatestJavaTest类设为主类(Main class)(即启动类)编译之后会生成一个javatestjar文件程序运行的结果如图
在命令行中可以采用以下方式: javafx jar javatestjar
实际上可以用纯Java的方式来启动程序只要把JavaFX的运行环境带上即可如JavaFX程序例子教程
java Djavalibrarypath= classpath jar javatestjar
因为JavaFX需要的jar文件很多因此这种最纯的java方法使用起来比较麻烦我觉得还是用javafx命令简洁些 而且javafx就是上述java命令的封装而已