问题描述
我怎么能调用一个函数,当一个特定的事件在我的Java小程序出现?
How can I call a function when a specific event occurs in my java Applet ?
在我的javascript我有以下code,总是返回空值。
In my Javascript I has the following code, that always return a empty value.
$(function () {
alert(document.applets[0].returnClientId());
});
我需要调用此警报,只是当执行一个特定的方法。更具体地,称为识别方法,存在于我的Java小程序
I need to call this alert, just when a specific method is executed. To be more specific, the method called identify, that exists in my java Applet.
的识别方法,存在于我的Util.class,即不要从JApplet的延伸。
我FormMain.class从JApplet的延伸,我称之为从这个Util.class一些方法(包括识别方法)。
The identify method, exists in my Util.class, that don't extends from JApplet.My FormMain.class extends from JApplet and I call some methods (including the identify method) from this Util.class.
更新:我的Java code
UPDATE: My Java Code
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());
}
}
在我的用户把手指在生物识别设备是刚刚执行的鉴定方法。
The Identify method is executed just when my User put the finger in the biometric device.
有人有一些想法?
推荐答案
假设你有以下的JS函数
Suppose you have the following JS function
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));
}
- Invoking Javascript code from an Applet
- Java to Javascript communication (Official Oracle docs)
要使用编译code netscape.javascript。*
包您需要的 $ JAVA_HOME / JRE / lib目录/ plugin.jar
。
To compile the code using netscape.javascript.*
package you need the $JAVA_HOME/jre/lib/plugin.jar
. See here
为了调用JavaScript,Java的code使用
netscape.javascript.JSObject和netscape.javascript.JSException
类。由于Java 2的发布,标准版1.4版,
在JAR文件中的jre / lib中提供了这些类/ plugin.jar内
无论是Java开发工具和Java运行时环境。如果你
引用这些JavaScript类,您将需要plugin.jar增加
你的编译类路径。这可以通过你的Java IDE来完成,如果
您可以使用一个,或者通过-classpath命令行参数
Java编译器javac的。
在运行时,Java插件会自动使这些类
适用于小程序,所以没有给小程序改变或它是如何设置
是必要的。
At run-time, the Java Plug-In automatically makes these classes available to applets, so no changes to the applet or how it is set up are necessary.
这篇关于呼叫通过JavaScript Java小程序的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!