0

当我的 java Applet 中发生特定事件时,如何调用函数?

在我的 Javascript 中,我有以下代码,它总是返回一个空值。

$(function () {
    alert(document.applets[0].returnClientId());
});

我需要在执行特定方法时调用此警报。更具体地说,我的 java Applet 中存在名为 identify 的方法。

identify 方法存在于我的 Util.class 中,它不是从 JApplet 扩展而来的。我的 FormMain.class 从 JApplet 扩展而来,我从这个 Util.class 中调用了一些方法(包括识别方法)。

更新:我的 Java 代码

public String getClientid() {
    return clientid;
}

public void setClientid(String clientid) {
    this.clientid = clientid;
}

public String returnClientId() {
    return getClientid();
}

public void identify() {
    try {
        fingerprintSDK.prepareForIdentification(this.template);

        ResultSet rs = identifyStmt.executeQuery();

        while (rs.next()) {         
            byte[] templateBuffer = rs.getBytes("template");

            Template referenceTemplate = new Template(templateBuffer);

            boolean matched = fingerprintSDK.identify(referenceTemplate);

            if (matched) {
            // ui is my FormMain instance
                ui.showImage(GrFingerJava.getBiometricImage(template,
                        fingerprint, fingerprintSDK));

                ui.writeLog("Found. Client = "
                        + rs.getString("Name"));

                ui.setClienteid(rs.getString("Cliente_Id"));

                ui.disableTemplate();                   
                return;
            }
        }

        ui.writeLog("Not Found.");
        ui.enableTemplate();
    } catch (SQLException e) {

        ui.writeLog(e.getMessage());
    } catch (GrFingerJavaException e) {
        ui.writeLog(e.getMessage());
    }
}

就在我的用户将手指放入生物识别设备时执行识别方法。

有人有什么想法吗?

4

1 回答 1

0

假设你有以下 JS 函数

function foo(client) {
    alert(client);
}

你将修改你Utils.java的如下

public void identify() {
    // the rest of your code
    String id = rs.getString("Cliente_Id");
    ui.setClienteid(id);
    // call the Javascript function
    JSObject.getWindow(ui).eval(String.format("foo(%s)", id));
}

要使用包编译代码,netscape.javascript.*您需要$JAVA_HOME/jre/lib/plugin.jar. 看这里

为了调用 JavaScript,Java 代码使用 netscape.javascript.JSObject 和 netscape.javascript.JSException 类。自 Java 2 标准版 1.4 版发布以来,这些类在 Java 开发工具包或 Java 运行时环境中的 jar 文件 jre/lib/plugin.jar 中提供。如果您引用这些 JavaScript 类,则需要将 plugin.jar 添加到您的编译类路径中。这可以通过您的 Java IDE(如果您使用一个)或通过将 -classpath 命令行参数传递给 Java 编译器 javac 来完成。

在运行时,Java 插件自动使这些类可用于小程序,因此无需更改小程序或其设置方式。

于 2012-07-25T17:39:57.197 回答