-
Bug
-
Resolution: Duplicate
-
P2
-
None
-
1.4.0
-
None
-
generic
-
generic
On Windows ONLY, in the test enclosed below, CustomKeyEventDispatcher1 does not get called for keyTyped events on ordinary alphanumeric keys like 'a' or '7', but does get called for keys like backspace or tab.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FixedTest implements KeyListener {
JFrame frame;
JTextField textfield1, textfield2;
CustomKeyEventDispatcher1 customKeyEventDispatcher1 =
new CustomKeyEventDispatcher1();
public FixedTest() {
frame = new JFrame("Test Frame");
textfield1 = new JTextField("TextField1");
textfield2 = new JTextField("TextField2");
frame.setSize(300,100);
// Add key listener for the text field
textfield1.addKeyListener(this);
textfield2.addKeyListener(this);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(textfield1);
frame.getContentPane().add(textfield2);
// Set our keyboard focus manager
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(customKeyEventDispatcher1);
frame.setVisible(true);
textfield1.requestFocus();
}
public void keyPressed(KeyEvent ke) {
System.out.println("Event: keyPressed");
}
public void keyReleased(KeyEvent ke) {
System.out.println("Event: keyReleased");
}
public void keyTyped(KeyEvent ke) {
System.out.println("Event: keyTyped");
}
public static void main(String[] args) {
new FixedTest();
}
}
class CustomKeyEventDispatcher1 extends KeyEventDispatcher {
public boolean dispatchKeyEvent(KeyEvent ke) {
System.out.println("CustomKeyEventDispatcher1: dispatchKeyEvent" + ke + "\n");
return false;
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FixedTest implements KeyListener {
JFrame frame;
JTextField textfield1, textfield2;
CustomKeyEventDispatcher1 customKeyEventDispatcher1 =
new CustomKeyEventDispatcher1();
public FixedTest() {
frame = new JFrame("Test Frame");
textfield1 = new JTextField("TextField1");
textfield2 = new JTextField("TextField2");
frame.setSize(300,100);
// Add key listener for the text field
textfield1.addKeyListener(this);
textfield2.addKeyListener(this);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(textfield1);
frame.getContentPane().add(textfield2);
// Set our keyboard focus manager
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(customKeyEventDispatcher1);
frame.setVisible(true);
textfield1.requestFocus();
}
public void keyPressed(KeyEvent ke) {
System.out.println("Event: keyPressed");
}
public void keyReleased(KeyEvent ke) {
System.out.println("Event: keyReleased");
}
public void keyTyped(KeyEvent ke) {
System.out.println("Event: keyTyped");
}
public static void main(String[] args) {
new FixedTest();
}
}
class CustomKeyEventDispatcher1 extends KeyEventDispatcher {
public boolean dispatchKeyEvent(KeyEvent ke) {
System.out.println("CustomKeyEventDispatcher1: dispatchKeyEvent" + ke + "\n");
return false;
}
}
- duplicates
-
JDK-4395801 Swing KeyListener events are not consumed with user defined KeyEventDispatcher
-
- Closed
-