首页 电脑 电脑学堂 查看内容

Java的脚本动态用法

2010-9-10 15:42 713 0

摘要:     function doSth(){     jf.setSize(500,300);     jf...
关键词: nbsp import list Invocable 对象 engin javax 引擎 函数 script

    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<String> list=new ArrayList<String>();     //得到挷定的键值对象,把当前的两个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<String> l=(List<String>)in.invokeFunction("getNames");     System.out.println(l);     //调用一下定义在JS里面的另一个函数     in.invokeFunction("testJS");     //最后调用一个函数,该函数可以使我们前面定义的窗体显示出来     in.invokeFunction("doSth");     }     }
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部