JDK-4090407 : Could not catch input event via Input Method.
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 1.1.2
  • Priority: P3
  • Status: Closed
  • Resolution: Won't Fix
  • OS: generic
  • CPU: generic
  • Submitted: 1997-11-03
  • Updated: 1997-11-10
  • Resolved: 1997-11-10
Related Reports
Relates :  
Description
TextField can catch keyinput event if it's made via Input Method.

The following code is to reject an input of "z", if z is inputed from IME/IM
it won;t be consumed.


import java.awt.*;
import java.awt.event.*;

public class EchoChar {
  public static void main(String args[]) {
    new EchoChar().run();
  }

  Frame fp;
  TextField tf;

  void run() {
    fp = new Frame("Test");
    fp.add(tf = new TextField(50));
    tf.addKeyListener(
      new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
          if(e.getKeyChar() == 'Z')
            e.consume();
        }
      }
    );
    fp.pack();
    fp.show();
  }
}


Comments
PUBLIC COMMENTS keyPressed events aren't generated for IME key events.
10-06-2004

EVALUATION [joconner@eng 11/10/97] Can provide a workaround. We don't generate keyPressed events from the IME, however, we do create keyTyped events. See Work Around section.
10-11-0097

WORK AROUND [joconner@eng 11/10/97] keyPressed events are not generated for IME key events. However, the customer can accomplish the same task (consume characters) in a keyTyped event handler.
10-11-0097