-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
7, 7u21
-
Windows
FULL PRODUCT VERSION :
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Microsoft Office IME 2010
A DESCRIPTION OF THE PROBLEM :
Component#enableInputMethods(false) does not disable IME with JRE7.
There is no problem with JRE6. So, it is a regression issue between JRE7 and JRE6.
Javadoc:
http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#enableInputMethods(boolean)
REGRESSION. Last worked in version 6u45
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1) Launch KeyListenerTest as Java Applet with JRE7
2) Press VK_HALF_WIDTH or VK_FULL_WIDTH key
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
IME not enabled.
KeyListenerTest as Java Applet can catch key press events such as VK_HALF_WIDTH or VK_FULL_WIDTH with KeyListener.
ACTUAL -
IME enabled.
Some key press events such as VK_HALF_WIDTH or VK_FULL_WIDTH are consumed by IME.
Therefore, it is unable to catch such key events with KeyListener.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
public class KeyListenerTest extends Applet implements KeyListener{
String typekey;
String presskey;
String keyCode;
public void init(){
typekey = " " ;
presskey = " " ;
keyCode = " " ;
addKeyListener(this);
enableInputMethods(false);
}
public void start(){
}
public void paint(Graphics g){
g.drawString(typekey, 10, 20);
g.drawString(presskey, 10, 50);
g.drawString(keyCode, 10, 80);
requestFocusInWindow();
}
public void keyPressed(KeyEvent e){
int keycode = e.getKeyCode();
presskey = KeyEvent.getKeyText(keycode);
keyCode = Integer.toString(keycode);
int mod = e.getModifiersEx();
if ((mod & InputEvent.SHIFT_DOWN_MASK) != 0){
presskey += " +SHIFT " ;
}
if ((mod & InputEvent.ALT_DOWN_MASK) != 0){
presskey += " +ALT " ;
}
if ((mod & InputEvent.CTRL_DOWN_MASK) != 0){
presskey += " +CTRL " ;
}
repaint();
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
char key = e.getKeyChar();
typekey += key;
repaint();
}
}
---------- END SOURCE ----------
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Microsoft Office IME 2010
A DESCRIPTION OF THE PROBLEM :
Component#enableInputMethods(false) does not disable IME with JRE7.
There is no problem with JRE6. So, it is a regression issue between JRE7 and JRE6.
Javadoc:
http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#enableInputMethods(boolean)
REGRESSION. Last worked in version 6u45
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1) Launch KeyListenerTest as Java Applet with JRE7
2) Press VK_HALF_WIDTH or VK_FULL_WIDTH key
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
IME not enabled.
KeyListenerTest as Java Applet can catch key press events such as VK_HALF_WIDTH or VK_FULL_WIDTH with KeyListener.
ACTUAL -
IME enabled.
Some key press events such as VK_HALF_WIDTH or VK_FULL_WIDTH are consumed by IME.
Therefore, it is unable to catch such key events with KeyListener.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
public class KeyListenerTest extends Applet implements KeyListener{
String typekey;
String presskey;
String keyCode;
public void init(){
typekey = " " ;
presskey = " " ;
keyCode = " " ;
addKeyListener(this);
enableInputMethods(false);
}
public void start(){
}
public void paint(Graphics g){
g.drawString(typekey, 10, 20);
g.drawString(presskey, 10, 50);
g.drawString(keyCode, 10, 80);
requestFocusInWindow();
}
public void keyPressed(KeyEvent e){
int keycode = e.getKeyCode();
presskey = KeyEvent.getKeyText(keycode);
keyCode = Integer.toString(keycode);
int mod = e.getModifiersEx();
if ((mod & InputEvent.SHIFT_DOWN_MASK) != 0){
presskey += " +SHIFT " ;
}
if ((mod & InputEvent.ALT_DOWN_MASK) != 0){
presskey += " +ALT " ;
}
if ((mod & InputEvent.CTRL_DOWN_MASK) != 0){
presskey += " +CTRL " ;
}
repaint();
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
char key = e.getKeyChar();
typekey += key;
repaint();
}
}
---------- END SOURCE ----------