que tal tratar o evento quando vc pressiona ? tipo key down?
T
thingol
Basicamente o que o Gilberto disse é que, em vez de usar um ActionListener (que na verdade pega só o “Mouse Released” do clique do botão), você teria de usar um MouseListener mesmo, e tratar os eventos “Mouse Pressed” (para ligar o seu tratamento repetitivo) e “Mouse Released” (para desligar seu tratamento repetitivo).
Note que o loop não pode ficar no tratamento de Mouse Pressed; ele só deve disparar uma thread, ou um timer rápido, ou coisa parecida. O Mouse Released deve desligar o processamento que está nessa thread, ou timer, ou sei lá o quê.
homisinho
Tenho um exemplo de timer aqui…
Espero q ajude…
importjava.util.Timer;importjava.util.TimerTask;/**** @author homisinho*/publicclassControlTime{Timertimer;booleanEstado;intDelay;intTime;/**** @param func type TimerTask Function to be executed;* @param d Time before running timer, in second;* @param t Time to run, in second;*/publicControlTime(intd,intt){Estado=false;Delay=d;Time=t;}publicvoidStop(){timer.cancel();Estado=false;}publicvoidPlay(TimerTaskfunc){timer=newTimer();timer.schedule(func,Delay*1000,Time*1000);Estado=true;}/**** @return if time is in use;*/publicbooleangetState(){return(Estado);}}
Para utilizar basta criar o objeto da classe:
public ControlTime tmr_2 = new ControlTime(60, 60);
E depois criar o timetask e passar como parametro:
TimerTasktt=newTimerTask(){publicvoidrun(){getDados(eq);///metodo qualquer q vc quer q execute}};tmr_2.Play(tt);
E depois pra parar:
tmr_2.Stop();
rock-skull
homisinho
Obrigado pela sua resposta. Deixa eu ver se eu entendi esse código direito. No terceiro código que você coloca, ele implementa a função a ser executada dentro de um método run, isso quer dizer que esse código vai dentro da Thread ?
Mais um coisa, caso vá dentro da Thread, significa que eu terei que criar um uma thread para cada botão que eu precisar disso ? (Pq são no mínimo 10), ou colocar todos os métos dentro dele e fazer um case pra saber qual método executar (uma segunda opção)?