Olá pessoal,
Estou desenvolvendo uma aplicação com JFrame onde não terei no frame nenhum componente que recebe foco.
Quando o usuário pressionar determinadas teclas, realizarei algumas funcionalidades.
Acontece que a principal funcionalidade será realizada quando o usuário soltar uma tecla.
Então estou utlizando o método KeyReleased, que segundo o próprio site da sun
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyListener.html
este evento é disparado apenas quando o usuário SOLTAR uma tecla.
O evento até que funciona bem, mas quando pressionamos uma tecla e deixamos pressionada por alguns segundos, o evento é disparado também.
Preciso que seja disparado apenas quando soltar a tecla.
Abaixo segue um código de exemplo.
Pressione a tecla ESC e rapidamente solte-a, então o envento será disparado (perfeito).
Pressione a tecla ESC e segure-a por alguns segundos. O evento será disparado do mesmo jeito (problema).
Alguma solução ?
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Principal {
public static void main(String[] args) {
JFrame frame;
frame = new JFrame("TESTE");
frame.getContentPane().setLayout(null);
frame.setBounds(50,50,200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent arg0){
}
public void keyTyped(KeyEvent arg0) {
}
public void keyReleased(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_ESCAPE){
JOptionPane.showMessageDialog(null,"Tecla ESC solta!");
}
}
});
}
}