Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2030638 | 1.3.1_01 | Eric Hawkes | P3 | Closed | Fixed | 01 |
Name: rlT66838 Date: 12/07/99
java version "1.2.2"
Classic VM (build JDK-1.2.2-001,native threads,symcjit)
When using the Java Plug-in in IE 5.0 it does not consume a keyEvent when
consume () is used. (ie. If you press F1 the windows help comes up) it does
not do this if you use the IE 5.0 VM
HTML page with the applet tag using HTMLConverter to use the plug -in:
<html><!--"CONVERTED_APPLET"-->
<!-- CONVERTER VERSION 1.0 -->
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
WIDTH = 300 HEIGHT = 200 NAME = main
codebase="http://java.sun.com/products/plugin/1.2/jinstall-12-
win32.cab#Version=1,2,0,0">
<PARAM NAME = CODE VALUE = TestKey >
<PARAM NAME = CODEBASE VALUE = http://192.168.1.1:8080/ >
<PARAM NAME = NAME VALUE = main >
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.2">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.2" java_CODE = TestKey
java_CODEBASE = http://192.168.1.1:8080/ NAME = main WIDTH = 300 HEIGHT = 200
pluginspage="http://java.sun.com/products/plugin/1.2/plugin-
install.html"><NOEMBED></COMMENT>
</NOEMBED></EMBED>
</OBJECT>
<!--
<APPLET CODE = TestKey CODEBASE = http://192.168.1.1:8080/ WIDTH = 300 HEIGHT
= 200 NAME = main >
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->
</html>
Sample code that recreates the problem:
import java.awt.event.*;
import java.applet.*;
public class TestKey extends Applet
{
public TestKey ()
{
TextField tf = new TextField();
tf.addKeyListener(new KeyEventHandler());;
tf.setFont(new Font("Courier",Font.PLAIN,14));
add(tf,BorderLayout.CENTER);
show();
}
public void init()
{
new TestKey ();
}
}
class KeyEventHandler extends KeyAdapter
{
public void keyPressed (KeyEvent evt)
{
printKey(evt);
}
public void keyReleased(KeyEvent evt)
{
printKey(evt);
}
public void keyTyped(KeyEvent evt)
{
printKey(evt);
}
void printKey(KeyEvent evt)
{
switch (evt.getID())
{
case KeyEvent.KEY_TYPED:
System.out.print("KEY_TYPED");
break;
case KeyEvent.KEY_PRESSED:
System.out.print("KEY_PRESSED");
break;
case KeyEvent.KEY_RELEASED:
System.out.print("KEY_RELEASED");
break;
}
System.out.print(" : char="+evt.getKeyChar()
+"("+(int)evt.getKeyChar()+")");
System.out.print(" code="+evt.getKeyCode());
if (evt.isActionKey())
{
System.out.print(" actionkey");
if (evt.getKeyCode() == KeyEvent.VK_F1)
evt.consume();
}
System.out.println();
}
}
(Review ID: 98758)
======================================================================
Name: yyT116575 Date: 01/31/2001
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C)
Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode)
I don't seem to be able to use consume() in a KeyTyped() routine. I know that heaps of developers have mentioned this one, but I have never seen anyone state the problem as simply as the following code demonstrates:
I have the following HTML code:
===============================
<HTML>
<HEAD>
<TITLE>TestBug</TITLE>
</HEAD>
<BODY>
<APPLET CODE="TestBug.class" WIDTH=200 HEIGHT=40>
</APPLET>
</BODY>
</HTML>
And the following Java code for the TestBug class:
==================================================
import java.awt.*;
import java.awt.event.*;
public class TestBug extends java.applet.Applet implements KeyListener {
FlowLayout AppLayout = new FlowLayout(FlowLayout.CENTER);
Panel mainPanel = new Panel();
Label lbl = new Label("Enter Something:", Label.LEFT);
TextField txt = new TextField(5);
public void init() {
mainPanel.setLayout(AppLayout);
mainPanel.add(lbl);
mainPanel.add(txt);
txt.addKeyListener(this);
add(mainPanel);
}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {
e.consume();
}
}
That's all there is. When this is executed in a browser, I can see all the text
that is typed! I get better results if I use the keyPressed() routine, but I don't want to, as it may not be platform independent.
Test Environment:
=================
I get this problem on:
Windows NT4 (service pack 6) using IE5.5
I have also tried it on the following environment, (and it didn't work):
browser: Netscape Communicator 4.76
OS: SunOS Release 5.6 Generic_105181-22
machine: SUNW,Ultra-2; sparc; sun4u
Window System: OpenWindows Version 3.6
I have also tried it on the following environment, (and it didn't work):
browser: Internet Explorer version 4
platform: Windows 98
But wait - just now I tried it on:
Windows NT4 (service pack 6) using Netscape Communicator 4.5 and IT WORKS (i.e. I can't see any text as the user types)! It might therefore be a problem with Internet Explorer on NT?
(Review ID: 115415)
======================================================================
- backported by
-
JDK-2030638 Java Plugin does not consume a keyEvent when consume() is used
- Closed
- duplicates
-
JDK-4408043 Pressing F1 in an applet launches Internet Explorer help
- Closed
-
JDK-4650891 Applet receives the F1 key event but the Internet Explorer Help panel pops up.
- Closed