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();
}
}
}
运行以后就会显示下面的窗口: