Java的脚本动态用法是什么?
Java的脚本动态用法是什么?
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"); } }。
答:function doSth(){ jf.setSize(500,300); jf.setVisible(true); jf.setDefaultCloseOp...详情>>