andrepadez Posted May 16, 2008 at 10:53 AM Report Share #185450 Posted May 16, 2008 at 10:53 AM Boas, Tinha feito uma cena em C# que queria implementar agora em Java. TIpo um temporizador de cozinha. A estrutura era a seguinte: public class Chrono() { int limitMinutes,limitSeconds; Timer Countdown = new Timer(); // construtor public Chrono (int min, int sec) { this.limitMinutes = min; this.limitSeconds = sec; Countdown.delay = 1000; //milliseconds Countdown.tick+= new eventhandler Countdown_Tick(this.Countdown_Tick);} private void Countdown_Tick(object sender, EventArgs e) { if (limitSeconds == 0) { limitSeconds = 60; limitMinutes--; } limitSeconds--; if (limitMinutes == 0 && seconds == 0) ChronoTimer.Stop(); } } Ok, com esta classe só preciso receber no form principal o limite de tempo pelo utilizador, e criar um novo objecto Chrono com esse limite. Crio também um Timer neste form, que de segundo a segundo me mande uma ToString() do objecto. Agora em java as coisas tornam-se bem mais complicadas, pois o eventhandler tem de ser definido recorrendo à criação de uma classe subclasse de TimerTask. Já dei voltas e mais voltas e não consegui atinar com isto. Alguem me pode dar uma ajuda?? Link to comment Share on other sites More sharing options...
Knitter Posted May 17, 2008 at 11:17 AM Report Share #185618 Posted May 17, 2008 at 11:17 AM Em Java, ou em C#, o princípio de um relógio é sempre o mesmo, existe um objecto que controla o tempo e que, em intervalos regulares, avisa todos os objectos que queiram saber de passagem de tempo através de um evento. É isso que tens feito no código acima e é isso que tens de implementar também em Java, a diferença é que não podes fazer a atribuição de eventos da mesma forma que em Java. A seguinte classe permite demonstrar uma forma possível de implementar um timer usando as classes que queres. package org.sergiolopes.allaroundtesting; import java.util.TimerTask; import java.util.Timer; /** * * @author knitter */ public class Main { private static int i = 0; public static void main(String[] args) { Timer t = new Timer(); t.schedule(new TimerTask() { @Override public void run() { System.out.println("Counting " + (++i)); } }, 1000, 1000); } } O método schedule que usei recebe 3 parâmetros, a subclasse de TimerTask que vai executar a tarefa, um long que indica o tempo de espera antes da tarefa iniciar, e um long que indica o periodo de tempo que separa o lançamento de eventos. Estou a usar classes anónimas, em que crio uma subclasse de TimerTask à qual não dou nome. A variável estática serve apenas para poder mostrar um contador simples, não é código correcto, e a execução não termina, isto é, tens de forçar o fim da execução do programa, mas penso que dê para ilustrar o que pretendes. Ajuda? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now