当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

浅谈Java和JavaFX之间的互操作性[Java编程]

赞助商链接



  本文“浅谈Java和JavaFX之间的互操作性[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

从JavaFX官方博客上读了一篇文章,是谈论从Java代码中调用JavaFX类的办法.目前的情形是,JavaFX可以调用Java的类,基本没有什么限制,而反过来,Java却不可以随便调用JavaFX的类.这点可以从JavaFX项目的编译历程看出缘由.以NetBeans为例,Build的历程是先编译Java代码(javac),然后才是JavaFX代码(javafxc),这样一来,Java代码不知道有JavaFX类,而JavaFX类却可以”瞥见”Java类.搜索一下我们可以发现,很多程序员都在探求各种从Java中调用JavaFX类的办法.有一篇风趣的(英文)文章是介绍若何通过反向工程来解析JavaFX类的构造.就连那篇JavaFX官网上的文章,也采取了非尺度的API来实现这一目的,并且也”保证”这种办法必定会在下一版本中失效.

那么我们到底需不需求Java和JavaFX之间的这种互操作性呢?我认为这种互操作性是很有必要的.假如二者可以近似于可以混用的程度,从长远上看,JavaFX可以有更大的生命力.试想一下应用MVC的计划情势(Model-View-Controller),我们可以用Java和JavaFX结合在一同开辟利用:用Java来写”M”和”C”两部份,用JavaFX来写”V”部份,这将是非常风趣的一件事情.

目前,有几种”尺度”的办法来从Java调用JavaFX.

1. 利用ScirptEngineManager类,的文章提到,我们可以这样做:

package calc;
import java.io.InputStreamReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class CalculatorLauncher {
public static void main(String[] args) {
try {
ScriptEngineManager manager=new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("fx");
InputStreamReader reader = new InputStreamReader (CalculatorLauncher.cla
ss.getResourceAsStream("Calculator.fx"));
engine.eval(reader); } catch (ScriptException ex) { }
}
}

但是,这种办法其实没有多粗心义,因为它就是象System.exec(”calc”)那样做个系统调用罢了.我认为还不如用System.exec(”JavaFX Calculator.fx”)越发直接一些.

2. 采取Java Reflection来解析JavaFX的bytecode,得到各个method或属性,然后举行各种调用.原理上这是可行的.但是由于reflection非常复杂,使得实用性大打折扣,同时,代码也没有什么可读性了.

3. 第三种办法是定义一个Java的interface,然后在JavaFX中实现这个 interface.比方:

public interface JavaInterface { ... }

在MyJavaFXClass.fx中, 可以这样写:

public class MyJavaFXClass extends JavaInterface
{ ... }

在Java代码中,只需按照interface来调用JavaFX对象便可.这种办法可以办理大部份互操作性的问题.唯一的麻烦就是必须定义一大堆interface,但是这是我目前位置发现的一种最好的办理情势.

JavaFX目前是刚公布的第一版,所以我们无需对它苛求太多了.不过我还是但愿JavaFX的计划者在下一版本中认真考虑这个问题.


  以上是“浅谈Java和JavaFX之间的互操作性[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>浅谈Java读取Csv实践</b>
  • 浅谈Java开辟人员对JCP感受绝望的缘由
  • <b>浅谈Java多线程</b>
  • <b>浅谈Java的输入输出流</b>
  • 浅谈Java中的典范转换
  • 浅谈Java开源XML工具包dom4j
  • 浅谈java事件
  • 浅谈Java的尺度数据流
  • 浅谈Java和JavaFX之间的互操作性
  • <b>浅谈Java中正则表达式的优化办法</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .