簡體   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