HOWTO: Fire 'Events' from a Java Applet on a Web PageID: Q178994
|
In Internet Explorer 3.0x, there is no way for a Java Applet to "fire" an
event that can be handled through scripting on a Web page. This article
shows how to use combination of Java class methods and scripting methods to
simulate events.
NOTE: In Internet Explorer 4.0, events can be fired from a Java applet and
caught in the Web pages script. See the Microsoft SDK for Java 2.0x or
later documentation for more information.
In order to simulate an event from a Java applet, you will need to create a
set of methods in your Java Applet class and a polling function on the Web
page. The polling function will check the applet to see if the event has
occurred and act on that event if it has occurred.
For example, if you wanted to fire an event when the users clicks on the
applet, you would code the class as follows:
import java.awt.*;
import java.applet.*;
public class MyApplet extends Applet
{
// fire is the private member that determines if the event fired
private boolean fire = false;
public MyApplet()
{
// Set the background to black so it can be seen
setBackground(Color.black);
}
public boolean handleEvent(Event e)
{
if(e.id == e.MOUSE_DOWN)
{
// When the user clicks, set fire to True.
fire = true;
}
return false;
}
// Scripting will call this method to see if the event occurred.
public boolean clicked()
{
// If fire is True, then 'reset' it to False and return True
if(fire)
{
fire = false;
return true;
}
// Otherwise, return False
return false;
}
}
Then, you need to create HTML:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub window_onLoad()
' Set the initial timeout for polling
window.setTimeout "checkClicked", 1000
end sub
' This is the method that the timeout calls
Sub checkClicked()
if document.app.clicked then
' The applets clicked method returned True
msgbox "You clicked my applet!"
' Reset the timeout
window.setTimeout "checkClicked", 1000
else
' The applets clicked method returned False
' Reset the timeout
window.setTimeout "checkClicked", 1000
end if
end sub
-->
</SCRIPT>
<TITLE>Document Title</TITLE>
</HEAD>
<BODY>
<APPLET CODE=MyApplet.class ID=app WIDTH=320 HEIGHT=200>
</APPLET>
</BODY>
</HTML>
When the Web page is loaded, the window_onLoad function executea. It
sets a "timeout" to execute the checkClicked VBScript function. The
checkClicked function "polls" the Applet by calling the clicked method on
the Applet. If the clicked method returns True, then the checkClicked
displays a message box and resets the timeout. If the clicked method
returned False, then the checkClicked function just resets the timeout.
For more information about the Microsoft virtual machine's AutoIDispatch feature, please see the following article in the Microsoft Knowledge Base:
Q172202 INFO: Implementing Java Automation Objects Using AutoIDispatchFor the latest Knowledge Base articles and other support information on Visual J++ and the SDK for Java, see the following pages on the Microsoft Technical Support site:
http://support.microsoft.com/support/visualj/
http://support.microsoft.com/support/java/
Additional query words: fire events applet script
Keywords : kbIE301 kbJScript100 kbJScript200 kbVBScript200 kbIE302 JMisc
Version : WINDOWS:1.0,2.0,3.01,3.02
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: July 26, 1999