Alguma idéia de como fazer essa rotina?

3 respostas
B

Eu queria fazer uma rotina que ficasse em loop até que algo acontecesse. Mas isso dentro de um método.

Por exemplo, tenho um JFrame e tenho um keyEvent lá pra cada tecla que aperta eu aviso um listeners.

Ai ficou mais ou menos assim o evento do JFrame:

public void keyReleased(KeyEvent e) {
                controle.andarCarro(e.getKeyCode());
                System.out.println(e.getKeyCode());
            }
Ai na minha classe listener, queria que só parasse de executar a tecla pra cima quando apertasse outra tecla, por exemplo:
public void andarCarro(int tecla) {
        switch (tecla) {
            case 38:
                while (tecla == 38) {
                    System.out.println("UP");
                }
                break;

            case 39:
                while (tecla == 39) {
                    System.out.println("RIGHT");
                    break;
                }
            default:
                return;
        }
    }

Mas não funciona, pois quando entra no while não sai mais. Não pega mais os eventos do Keylisteners do Jframe.

Alguma idéia? :D

3 Respostas

edufera10

Bem não sei se eu flagrei bem o que você esta querendo com este código, mas em todo caso vai uma sugestão de gambiarra ai pra você.

Faz um keypressed e uma variavel global int outraTecla;

ai quando o keypressed for acionado outraTecla=e.getkeycode();

logo assim acho que daria certo:

public void andarCarro(int tecla) {
        switch (tecla) {
            case 38:
                while (tecla == 38) {
                    System.out.println("UP");
                    if(outraTecla!=38){
                     return; ou   break;
                    }
                break;

            case 39:
                while (tecla == 39) {
                    System.out.println("RIGHT");
                    if(outraTecla!=39){
                     return; ou   break;
                    }
                    break;
                }
            default:
                return;
        }
    }

avisa ai se der certo falow

kenneth

Fala mocada…

Bom, eu acho que entendi o que voce quer fazer…
O programa nao sai do while, pq essa tecla que voce ta testando
foi a ultima pressionada…
E nao sei (corrijam-me se eu estiver errado, por favor) se voce consegue
capturar outra tecla, depois que entra no while, pois o fluxo fica rodando ali…

No caso, talvez fosse legal vc usar uma Thread pra executar a parte
do while, e no programa principal, para esta Thread quando alguma tecla
for pressionada…

Valeu, abraco!

ViniGodoy

Leia até o capítulo 6. Se quiser colocar som, prossiga até o capítulo 10.

http://fivedots.coe.psu.ac.th/~ad/jg/

Criado 20 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 3
Participantes 4