-
Bug
-
Resolution: Not an Issue
-
P3
-
7
-
os_x
FULL PRODUCT VERSION :
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.7.5
A DESCRIPTION OF THE PROBLEM :
keyReleased should be called when we push Command + A and release A. But keyReleased is not called in Java7 on MacOS. We can see the problem with Command+Any key(not only " A " ). When we push Control + A and release A on Windows, keyReleased is called.
REGRESSION. Last worked in version 6u45
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the program in this report
2. Push Command key
3. Push A key
4. Release A key
5. Check console.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
KeyEvent[KEY_RELEASED] for 'A' should be called.
ACTUAL -
KeyEvent[KEY_RELEASED] for 'A' is not called.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class TestKeyEvent2 extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestKeyEvent2 frame = new TestKeyEvent2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TestKeyEvent2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
setContentPane(contentPane);
this.addKeyListener(this);
JLabel lblNewLabel = new JLabel( " <html>Push Command + any KEY.<br>Check whether you recieve RELEASED event on console.</html> " );
contentPane.add(lblNewLabel, BorderLayout.CENTER);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e);
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e);
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println(e);
}
}
---------- END SOURCE ----------
java version " 1.7.0_21 "
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.7.5
A DESCRIPTION OF THE PROBLEM :
keyReleased should be called when we push Command + A and release A. But keyReleased is not called in Java7 on MacOS. We can see the problem with Command+Any key(not only " A " ). When we push Control + A and release A on Windows, keyReleased is called.
REGRESSION. Last worked in version 6u45
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the program in this report
2. Push Command key
3. Push A key
4. Release A key
5. Check console.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
KeyEvent[KEY_RELEASED] for 'A' should be called.
ACTUAL -
KeyEvent[KEY_RELEASED] for 'A' is not called.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class TestKeyEvent2 extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestKeyEvent2 frame = new TestKeyEvent2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TestKeyEvent2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
setContentPane(contentPane);
this.addKeyListener(this);
JLabel lblNewLabel = new JLabel( " <html>Push Command + any KEY.<br>Check whether you recieve RELEASED event on console.</html> " );
contentPane.add(lblNewLabel, BorderLayout.CENTER);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e);
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e);
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println(e);
}
}
---------- END SOURCE ----------