xjl:Rhino的两个问题
原创
©著作权归作者所有:来自51CTO博客作者cownew的原创作品,如需转载,请与作者联系,否则将追究法律责任
Rhino 中使用 Java 对象
与网页中所使用的 JavaScript 不同的是, Rhino 中的脚本可以使用 Java 中的对象。要在脚本中使用 Java 类必须将 Java 类引入脚本。
使用 cx.initStandardObjects 创建出来的 Scriptable 类型实例,不支持在脚本中使用 import 语句,此时需要使用如下的代码来创建一个 ImporterTopLevel 类的实例,它是 Scriptable 一个实现,这样就支持在脚本中使用 importPackage 语句:
Context cx = Context.enter();
Scriptable iptScope = new ImporterTopLevel(cx);
在脚本中如下引入包名:
importPackage(Packages.javax.swing);
如果不使用 importPackage 语句,也可以采用直接包名来使用类:
Packages.javax.swing.JFrame frame = new JFrame(“myWindow”);
下面的代码演示在脚本中创建一个窗口,并在窗口上显示一个按钮。
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ImporterTopLevel;
import org.mozilla.javascript.Scriptable;
public class JSTest3
{
public static void main(String[] args)
{
StringBuffer script = new StringBuffer();
script.append("importPackage(java.awt);\n");
script.append("frame = new Frame(\"JavaScript\");\n");
script.append("frame.show();\n");
script.append("frame.setSize(new Dimension(200,100));\n");
script.append("button = new Button(\" 按钮 \");\n");
script.append("frame.add(button);\n");
script.append("frame.show();\n");
Context ctx = Context.enter();
Scriptable scope = new ImporterTopLevel(ctx);
try
{
ctx.evaluateString(scope, script.toString(), null, 1, null);
} finally
{
Context.exit();
}
}
}
运行以后就会显示下面的窗口:
上一篇:我发财了!!!
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
两个小问题
1.输入mysql命令,出现了 '>迟迟退出不了,怎么办? 在下一条中输入'; 2.notepad+
notepad++ mysql命令 -
CPU的两个小问题
CPU的两个小问题1.主频越高,CPU的运算速度就越快吗2.CPU除了执行指令外,还做什么事情
计算机组成原理 运算速度 其他 -
并发编程的两个问题
一. 线程通信问题:通信是指线程之间以何种机制
java 线程同步 消息传递 -
Tomcat启动的两个问题
Tomcat服务碰到两个常见的问题,进行了解决。
tomcat jvm java 启动报错 JVM -
合并两个链表的问题
两种方法合并两个链表。
合并链表 数据结构 c 链表 #include -
两个List合并的问题
处理一个问题,需要把两个list合并,其中list的类型是一个对象,里面的id字段是唯一的,这时候要处
list java java-ee json 配置项 -
两个问题,值得聊聊
如题
c++ 百度 数据 -
两个问题
1.类的对象传递给静态成员函数 2. fork 以后 直接响应,而不是请求
静态成员函数 C语言 C