I donβt know what the problem is because you are providing too little code. However, you cannot use getSource() to check which key is entered (pressed or released). Use getKeyChar() and getKeyCode() .
The following is an explanation of my code:
- You need to add
KeyListener to the component (of course) - Component must have focus
- The component should be focused (set with the ability to focus on true)
- Component must request focus
- Cancel
keyTyped keyPressed or keyReleased to retrieve KeyEvent- To check which key is entered in
keyTyped , use getKeyChar() - To check which key is pressed or released in
keyPressed and keyReleased , use getKeyCode()
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Test { public static void main(String[] args) { JFrame f = new JFrame(); f.setSize(new Dimension(410, 330)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().setLayout(null); JPanel panel = new JPanel(); panel.setBackground(Color.GREEN); panel.setBounds(50, 50, 300, 200); panel.addKeyListener(new MyKeyListener()); // add KeyListener panel.setFocusable(true); // set focusable to true panel.requestFocusInWindow(); // request focus f.getContentPane().add(panel); f.setVisible(true); } static class MyKeyListener extends KeyAdapter { @Override public void keyTyped(KeyEvent e) { if (e.getKeyChar() == '\177') { // delete row method (when "delete" is typed) System.out.println("Key \"Delete\" Typed"); } } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DELETE) { // delete row method (when "delete" is pressed) System.out.println("Key \"Delete\" Pressed"); } } @Override public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DELETE) { // delete row method (when "delete" is released) System.out.println("Key \"Delete\" Released"); } } } }
source share