Quebrar while com listener

5 respostas
b4d366

Fiz um programinha para automação. Ele clica em certos pontos da tela pra mim indefinidamente.

while ( true ) {

… cliques…

}

no entanto eu gostaria de quebrar esse clique (looping) “infinito” quando eu pressionasse uma tecla. Pra isso a alternativa mais trivial seria:

  • Declarar um boolean (!typedX), e utilizar um Listener para modificar o boolean.

while ( !typedX ) {

… cliques …

}

No entanto eu sei apenas adicionar Listener para componentes (exemplo: botão). E no caso o foco seria outra janela.

vlw.!

**** uma forma bonita seria dar um break no while quando apertasse a tecla… desta forma terminaria imediatamente o meu laço e eu não teria q esperar acabar uma volta no laço. Mas isso eu não tenho nem noção de como fazer… ^^ ****

Obrigado. :slight_smile:

5 Respostas

Marky.Vasconcelos

Os listeners dos Components são só uma implementação do padrão Observer. Voce pode declarar um Listener dentro desse objeto que quando é chamado muda o boolean que nem voce falou. Mas precisa ser feito em outra Thread, pois o processo dessa Thread fica apenas no while.

b4d366

o problema é que minha janela ta minimizada. Assim eu não tenho foco na JFrame… ta em outra janela. =/
To há muito tempo atras disso, mas não encontro em lugar nenhum e vi q mta gnt já procurou isso.

Rafael_Marques1

evento no mouse?

b4d366

desculpa, mas não entendi a sua pergunta.

M

Se você estiver com outra janela do Java em foco é possível parar (há uma classe - não lembro qual - que trata de todos os eventos de entrada e, se não me engano, cobre todas as janelas abertas).

Se você estiver usando um programa nativo e quiser parar quando pressionar uma tecla, vai precisar usar SWT ou código nativo (no caso do Windows é possível usar JNA).

Criado 19 de janeiro de 2010
Ultima resposta 30 de jan. de 2010
Respostas 5
Participantes 4