如何在JavaScript中扩展Java类并添加类成员变量

如何在JavaScript中扩展Java类并添加类成员变量,java,javascript,extending,nashorn,Java,Javascript,Extending,Nashorn,我尝试创建一个扩展Java类的类的实例,并在该实例中添加一些类成员变量。以下是我的尝试: var ui = Java.extend(javax.swing.JPanel, { cb : new JCheckBox("A checkbox", true), }); 但是,Nashorn解释器会抛出以下错误: “TypeError:函数noSuchMethod(){[本机代码]}不是构造函数” 我做错了什么?当我添加自定义类的实例(如se.datadosen.util.Stopwatch

我尝试创建一个扩展Java类的类的实例,并在该实例中添加一些类成员变量。以下是我的尝试:

var ui = Java.extend(javax.swing.JPanel, { 
    cb : new JCheckBox("A checkbox", true),
});
但是,Nashorn解释器会抛出以下错误: “TypeError:函数noSuchMethod(){[本机代码]}不是构造函数”

我做错了什么?当我添加自定义类的实例(如se.datadosen.util.Stopwatch)时,Nashorn没有抱怨,但当我尝试添加JCheckBox时,它抛出了这个错误


(我知道组件是通过.add()调用添加到面板中的,但这个问题实际上是关于如何将类成员变量添加到子类中。

Java.extend
允许您将用JavaScript实现的方法添加到Java类中(实际上,创建一个新的类来对Java类进行子类化)。它不允许您添加任意属性,至少根据文档所述。请参阅,其中说明:

您可以使用Java.extend()函数扩展一个类,该函数将Java类型作为第一个参数,方法实现(以JavaScript函数的形式)作为其他参数。”(重点添加)


您正在尝试添加一个对象作为类的属性,至少是当前编写代码的方式。

谢谢。由于缺少javax.swingThanks,出现了奇怪的错误消息。使用javax.swing限定JCheckBox。实际上,该声明是“compile”,但它似乎无论如何都不起作用。没有办法向Java子类添加属性吗?这可以在BeanShell中完成,BeanShell是脚本化Java。