`
han2000lei
  • 浏览: 272930 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

javascript脚本化java

阅读更多
    JavaScript解释器包含一种功能,允许JavaScript代码来查询和设置java对象中字段值以及调用java对象中的方法。另外,JavaScript公平可以自己创建一个java对象。来看一段代码:
//创建java对象
var frame = new Packages.javax.swing.JFrame("Hello World");
var button = new Packages.javax.swing.JButton("Hello World");
var font = new Packages.java.awt.Font("SansSerif",Packages.java.awt.Font.BOLD,24);
//调用java对象中的方法  和java中一样吧? :D 
frame.add(button);
button.setFont(font);
frame.setSize(200,200);
frame.setVisible(true);

JavaScript解释器通过Packages全局变量来访问所有的java包。例如:
Packages.javax.awt是访问javax.awt包,而Packages.java.lang.System是访问java.lang.System类。
另外,如果是java包,JavaScript解释器有一个专门访问java包的全局标记,可以不用Packages了,这个全局标记就是java,因此,上面的Packages.java.lang.System可以直接写成java.lang.System。除了java包,其它的包都要通过Packages全局标记来访问。
    JavaScript之所以如此方便的使用java对象,是因为JavaScript解释器采用了一种LivaConnect技术。要理解LiveConnect所使用的JavaScript数据类型。
一、JavaPackage类:
    JavaPackage是JavaScript的一种数据类型。java中的一个包存放着一组相关的java类,而一个JavaPackage类就表示了一个java包。JavaPackage的属性就是java包中所有的类,以及这个包中的所有子包。像java、javax包都是JavaPackage对象。:JavaPackage中的属性(即:类)是不可枚举的,所以无法用for/in循环查看包中的内容。
    所有的JavaPackage对象都包含在一个父JavaPackage中。例:
Packages.java是一个JavaPackage,它包含了Packages.java.awt这个JavaPackage.而Packages.java.awt又包含了一个Packages.java.awt.Button,这个是个具体类了,那它就不是一个JavaPackage了,而是JavaClass.(JavaClass是包中的类)。另外,Packages.java.awt下还有个包Packages.java.awt.image包。
从而看出,某个JavaPackage通常存在这种情况:

JavaPackage有两个缺点:
1、对于LiveConnect来说,没有办法提前分辨属性是类还是包,所以JavaScript先把属性当类来处理,如果找不到类,才按包来独步一时。这样导致了第二个缺点
2、如果写错了类名,JavaScript会把它当作一个包,而不是通知程序员类名不存在。
分享到:
评论
1 楼 itlangqun 2010-08-21  
有帮助,谢谢!!

相关推荐

Global site tag (gtag.js) - Google Analytics