Dae galera,
Como faço para eu pegar duas teclas precionadas ao mesmo tempo???
Por exemplo, pra cima e pra direita juntos (diagonal)…
Quando faço isso o KeyEvent não faz as duas, ele faz uma e trava a outra… sendo que ela está apertada … ai tenho q soltar e apertar de novo!!
Sacaram ou expliquei mal?
na verdade ele faz as duas sim, soh q se vc ficar segurando ele n vai ficar repetindo o keyPressed pras duas, apenas pra uma… vc pode resolver isso criando uma thread e usando booleans para controlar as direcoes…
D
DanielBadawiPJ
hehehehhe!!
nao faz nem duas semanas q eu tava com essa mesma dúvida!
e graças ao PJ, o problema foi solucionado com facilidade!
o segredo é usar threads… da um look nesse tópico onde solucionei minha dúvida.
qdo eu usei esse código, eu modifiquei bastante… mas com esse tópico com certeza vc vai ter “a ideia” de como resolver!
flw! abraços
F
FelipePJ
“DanielBadawi”:
hehehehhe!!
nao faz nem duas semanas q eu tava com essa mesma dúvida!
e graças ao PJ, o problema foi solucionado com facilidade!
o segredo é usar threads… da um look nesse tópico onde solucionei minha dúvida.
qdo eu usei esse código, eu modifiquei bastante… mas com esse tópico com certeza vc vai ter “a ideia” de como resolver!
flw! abraços
nos respondemos o post no mesmo minuto eheheheh PJ rox!
R
Rubem_AzenhaPJ
tenho uma classe boa para mexer com teclado
o unico problema é que ela detecta no maximo 5 teclas por linha do teclado…
importjava.awt.event.*;/***Classe que implementa a interface KeyListener*<br>O objetivo dela e ler, em qualquer momento, uma tecla que o usuário digitar<br>*e guardar o código ANSI dela em uma váriavel*/publicclassTecladoimplementsKeyListener{/** Constante que indica o códico ANSI da tecla <B>"seta para cima"</B> */publicstaticfinalintCIMA=38;/** Constante que indica o códico ANSI da tecla <B>"seta para baixo"</B> */publicstaticfinalintBAIXO=40;/** Constante que indica o códico ANSI da tecla <B>"seta para direita"</B> */publicstaticfinalintDIREITA=39;/** Constante que indica o códico ANSI da tecla <B>"seta para esquerda"</B> */publicstaticfinalintESQUERDA=37;/** Constante que indica o códico ANSI da tecla <B>"Enter"</B> */publicstaticfinalintENTER=10;/** Constante que indica o códico ANSI da tecla <b>"Esc"</b> */publicstaticintESC=27;/** Constante que indica o códico ANSI da tecla <B>"F1"</B> */publicstaticfinalintF1=112;/** Constante que indica o códico ANSI da tecla <B>"w"</B> */publicstaticfinalintW=87;/** Constante que indica o códico ANSI da tecla <B>"s"</B> */publicstaticfinalintS=83;//Vetor que guarda quais teclas estãoapertadasprivatestaticboolean[]TeclasPressionadas=newboolean[256];/** *Função que é disparada quando o usuário digita qualquer *<br> tecla, mesmo que fora de uma leitura. *<br> Ela guarda a tecla que o usuário digitou. */publicstaticvoidinicializaVetorTeclas(){for(inti=0;i<256;i++){TeclasPressionadas[i]=false;}}publicvoidkeyPressed(KeyEvente){if(e.getKeyCode()<256){TeclasPressionadas[e.getKeyCode()]=true;}}/** * Função que é disparada quando o usuário solta uma tecla que ele apertou * <br>Ela atualiza o valor da variável funcionou */publicvoidkeyReleased(KeyEvente){if(e.getKeyCode()<256){TeclasPressionadas[e.getKeyCode()]=false;}}/** * Função que é dispara enquanto o usuário está com uma tecla pressionada */publicvoidkeyTyped(KeyEvente){}/** * Função usada para fazer a interface com o programador que<br> * usar esta classe. * @return <code>CodTecla</code> - o valor ANSI da última tecla digitada pelo usuário */publicstaticbooleanEstaPressionada(intTecla){returnTeclasPressionadas[Tecla];}}
espero que gostem…
F
FelipePJ
“microfilo”:
tenho uma classe boa para mexer com teclado
o unico problema é que ela detecta no maximo 5 teclas por linha do teclado…
importjava.awt.event.*;/***Classe que implementa a interface KeyListener*<br>O objetivo dela e ler, em qualquer momento, uma tecla que o usuário digitar<br>*e guardar o código ANSI dela em uma váriavel*/publicclassTecladoimplementsKeyListener{/** Constante que indica o códico ANSI da tecla <B>"seta para cima"</B> */publicstaticfinalintCIMA=38;/** Constante que indica o códico ANSI da tecla <B>"seta para baixo"</B> */publicstaticfinalintBAIXO=40;/** Constante que indica o códico ANSI da tecla <B>"seta para direita"</B> */publicstaticfinalintDIREITA=39;/** Constante que indica o códico ANSI da tecla <B>"seta para esquerda"</B> */publicstaticfinalintESQUERDA=37;/** Constante que indica o códico ANSI da tecla <B>"Enter"</B> */publicstaticfinalintENTER=10;/** Constante que indica o códico ANSI da tecla <b>"Esc"</b> */publicstaticintESC=27;/** Constante que indica o códico ANSI da tecla <B>"F1"</B> */publicstaticfinalintF1=112;/** Constante que indica o códico ANSI da tecla <B>"w"</B> */publicstaticfinalintW=87;/** Constante que indica o códico ANSI da tecla <B>"s"</B> */publicstaticfinalintS=83;//Vetor que guarda quais teclas estãoapertadasprivatestaticboolean[]TeclasPressionadas=newboolean[256];/** *Função que é disparada quando o usuário digita qualquer *<br> tecla, mesmo que fora de uma leitura. *<br> Ela guarda a tecla que o usuário digitou. */publicstaticvoidinicializaVetorTeclas(){for(inti=0;i<256;i++){TeclasPressionadas[i]=false;}}publicvoidkeyPressed(KeyEvente){if(e.getKeyCode()<256){TeclasPressionadas[e.getKeyCode()]=true;}}/** * Função que é disparada quando o usuário solta uma tecla que ele apertou * <br>Ela atualiza o valor da variável funcionou */publicvoidkeyReleased(KeyEvente){if(e.getKeyCode()<256){TeclasPressionadas[e.getKeyCode()]=false;}}/** * Função que é dispara enquanto o usuário está com uma tecla pressionada */publicvoidkeyTyped(KeyEvente){}/** * Função usada para fazer a interface com o programador que<br> * usar esta classe. * @return <code>CodTecla</code> - o valor ANSI da última tecla digitada pelo usuário */publicstaticbooleanEstaPressionada(intTecla){returnTeclasPressionadas[Tecla];}}
espero que gostem…
vc n precisa gravar em constantes as teclas cima, baixo, etc… eles jah estao gravadas em constantes staticas na classe KeyEvent se n me engano…
C
clvPJ
Opa…
Valeu galera…
Pois é… ja tinha feito isso no celular!! Achei q o J2SE tinha alguma solução mais nativa, heheheh…
Mas valeu pela colaboration aí!!!
Eu até pesquisei no fórum antes… mas cada palavra chave q eu colocava me retornava o forum inteiro… ehuaheuhaueae…
Aí resorvi postar!!!
Descurpem!!!
Até +!
R
Rubem_AzenhaPJ
“Felipe”:
vc n precisa gravar em constantes as teclas cima, baixo, etc… eles jah estao gravadas em constantes staticas na classe KeyEvent se n me engano…
de fato
mas eu não manjava muito bem evento qndo eu fiz essa classe
então eu e meus colegas testamos tecla por tecla… aff…