quando eu mantenho uma tecla pressionada…por exempla a tecla VK_LEFT;
o listener “pensa” que eu estou apertando e soltando a tecla repetidas vezes…
o resumo do codigo
public void keyPressed(KeyEvent e)
{
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
System.out.println("Tecla pŕessionada!");
break;
}}
public void keyReleased(KeyEvent e)
{
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
System.out.println("Tecla solta!");
break;
}}
o problema é que eu quero chamar um metodo pelo press e released, mas só quando a tecla for realmente pressionada e solta, mas nao quando se mantiver pressionada… esta confusão do listener esta me deixando confuso…
[code]addKeyListener
(
new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if (
e.getKeyCode() == KeyEvent.VK_LEFT
)
{
System.out.println(“Pressed”);
}
}
public void keyReleased(KeyEvent e)
{
if (
e.getKeyCode() == KeyEvent.VK_LEFT
)
{
System.out.println("Released");
}
}
}
);[/code]
Resultado.:
Pressed
Pressed
Pressed
Pressed
Pressed
Pressed
Released
Pressed
Pressed
Pressed
Pressed
Pressed
Released
Pressed
Pressed
Pressed
Pressed
Pressed
Pressed
Pressed
Pressed
Released
Tchauzin![/quote]
NO caso da Lina, você pode “amarrar” a chamada do evento por uma variável booleana também… Assim ele só chama a instrução que corresponde a impressão de “Pressed” uma vez até você soltar e apertar o botão de novo.
Manter uma tecla pressionada ativa a auto-repetição. Para comprovar isso, mantenha uma tecla qualquer (como a letra A) e a mantenha pressionada. Não é porque a tecla é o Shift ou o Control que ela não tem auto-repetição.
A auto-repetição das teclas é uma características do subsistema de entrada de dados do seu sistema operacional (Windows, Linux) ou ambiente operacional (Gnome, KDE), ou seja, é algo que idealmente não deveria ser gerenciado pela sua aplicação. Assim, em vez de desativar a auto-repetição, o ideal é detectar e processar essa situação de alguma maneira dentro da sua aplicação, sendo uma saída possível a variável boolean sugerida anteriormente.