Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8015083

enableInputMethods(false) does not disable IME

XMLWordPrintable

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

            nkumar Naveen Kumar (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: