xjl:Rhino的两个问题

xjl:Rhino的两个问题

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();

         }

     }

}

运行以后就会显示下面的窗口:

ri1.JPG

你可能感兴趣的:(xjl:Rhino的两个问题)