首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java的脚本动态用法介绍

Java的脚本动态用法介绍

www.jz123.cn  2009-09-22   来源:   中国建站    责任编辑(袁袁)    我要投递新闻


      function doSth(){
  jf.setSize(500,300);
  jf.setVisible(true);
  jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
  }
  function getNames(){
  list.add("doSth");
  list.add("getNames");
  return list;
  }
  function testJS(){
  print('Hello world!');
  }
  import java.io.FileReader;
  import java.util.ArrayList;
  import java.util.List;
  import javax.script.Bindings;
  import javax.script.Invocable;
  import javax.script.ScriptContext;
  import javax.script.ScriptEngine;
  import javax.script.ScriptEngineManager;
  import javax.swing.JFrame;
  /**
  *
  * @author hadeslee
  */
  public class Test {
  public static void main(String[] args)throws Exception {
  //根据js的后缀名生成一个解析JS的脚本解析引擎
  ScriptEngine engin=new ScriptEngineManager().getEngineByExtension("js");
  //查询一下这个引擎是否实现了下面很实用的接口
  System.out.println(engin instanceof Invocable);
  //声明两个对象,传入到JS里面去
  JFrame jf=new JFrame("test");
  List list=new ArrayList();
  //得到?定的键值对象,把当前的两个JAVA对象放进去
  Bindings bind=engin.createBindings();
  bind.put("jf",jf);
  bind.put("list",list);
  //把?下的键值对象放进去,作用域是当前引擎的范围
  engin.setBindings(bind,ScriptContext.ENGINE_SCOPE);
  //用引擎执行一段写在JS文件里面的代码
  Object obj=engin.eval(new FileReader("test.js"));
  //这个时候返回值当然 是null了
  System.out.println(obj);
  //把当前的引擎强制转为Invocable,这样就可以调用定义在JS文件里面的一个一个函数了
  Invocable in=(Invocable)engin;
  //得到了从JS里面返回来的对象
  List l=(List)in.invokeFunction("getNames");
  System.out.println(l);
  //调用一下定义在JS里面的另一个函数
  in.invokeFunction("testJS");
  //最后调用一个函数,该函数可以使我们前面定义的窗体显示出来
  in.invokeFunction("doSth");
  }
  }


上一篇:Struts2教程:使用Validation框架验证数据 下一篇:编程技巧:Swing写的简单的计算器

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图