繁体   English   中英

通过JavaScript调用Java Applet方法

[英]Call a java applet method via javascript

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

在我的Javascript中,我有以下代码,该代码始终返回空值。

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

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

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

更新 :我的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());
    }
}

当我的用户将手指放在生物识别设备上时,将执行Identify方法。

有人有主意吗?

假设您具有以下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 Standard Edition版本1.4发布以来,这些类在Java开发工具包或Java运行时环境的jar文件jre / lib / plugin.jar中提供。 如果引用这些JavaScript类,则需要将plugin.jar添加到编译类路径中。 这可以通过Java IDE(如果使用的话)来完成,也可以通过将-classpath命令行参数传递给Java编译器javac来完成。

在运行时,Java插件自动使这些类可用于applet,因此不需要更改applet或设置它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM