荣耀Magic7系列全面升级大王影像,首发AI超级长焦拍远更清晰
2024-12-23
/* * Test.java * * Created on 2007-9-19, 15:28:49 * * To change this template, choose Tools | Templates * and open the template in the editor. */ package lbf.script; 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"); } } |
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!'); } |
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交