Timer em Java p/ Mobile

andrepadez

Power Member
Boas,
estou a começar a programar em Java (para mobile), queria utilizar a classe Timer como usei em C#.
Eis o código da classe que estou a criar:

Código:
public Chrono(int min, int sec){
        this.limitMinutes = min;
        this.limitSeconds = sec;
        countdown = new java.util.Timer();
        countdown.schedule(Chrono_Tick(), 1000);
    }
    
    private void chrono_Tick(){
        if (!paused){
            if (limitSeconds == 0){            
                    limitSeconds = 60;
                    limitMinutes--;                
                }
            limitSeconds--;
        
            if (limitSeconds == 0 && limitMinutes == 0)
                countdown.wait();
        }

Ao compilar dá-me um erro que diz:

"D:\Documents and Settings\Randomly\My Documents\NetBeansProjects\MobileApplication1\src\Chrono.java:20: 'void' type not allowed here"

Alguem me sabe explicar porquê? e como resolver???

Thx
 
tem a ver com a função private void chrono_Tick().

diz que não posso usar o tipo void aqui

Vou ver a documentação que postaste, thx

Ok, estive a ler o que me mandaste, mas não falam de como criar ou invocar o método que vai ser chamado on_Tick.

Se me puderem ajudar...
 
Última edição pelo moderador:
Nunca utilizei essa Timer, mas pelo que percebi lendo a API, o método schedule tem várias assinaturas mas o primeiro é sempre TimerTask task.

por exemplo, e seguindo a tua lógica: countdown.schedule(TimerTask task, Date date);
contudo o primeiro parametro que passas é simplesmente void, não correspondendo ao parametro de entrada.

Fui então ler a API do TimerTask.


E penso que resolves o teu problema criando uma classe que extenda o TimerTask, tipo:

Código:
class MyTask extends TimerTask {

public void run(){

// Aqui metes o que queres que ele execute.

  }
}

E assim passavas:

Código:
countdown = new java.util.Timer();
countdown.schedule(new MyTask(), 1000);

Podes ler mais sobre esta API aqui: http://java.sun.com/j2se/1.3/docs/api/java/util/TimerTask.html
 
Última edição:
Antes de mais obrigado ao Mavers e ao MrBrightside.

Ok, experimentei assim e compilou. Não consigo é perceber como posso fazer o que quero, como tenho em C# e corre-me perfeitamente:

1 - classe Chrono que recebe no construtor como args ints minutos e segundos (limite)
- tem como instâncias limitMinutes e limitSeconds (ints) e countdown (Timer)~
- o método que contem as instruções executadas ao Delay (de segundo a segundo, baixar os segundos, e se segundos chegam a zero segundos = 60 e minutos--;
- Dentro dessa classe tenho os métodos para Start e Stop do Timer
- ToString()

2 - no programa principal declaro uma instância de Chrono com (2m30s de limite).
- crio um timer tb para todos os segundos fazer "label1.text= chrono1.toString();"

Não estou a ver como consigo fazer algo do género em Java, deve ser possível de certeza.
Já percebi mais ou menos os mecanismos do Timer e TimerTask. Penso que é mais uma questão de organização do que outra coisa.
Alguem me pode ajudar???
 
Eu acho que conseguirias fazer o mesmo em java.... provavelmente escapou-te um pormenor.

Mas não compares o C# com java... Podem parecer iguais a primeira vista mas não o são...
Vou falar no C# pois é nesta linguagem que tenho programado ultimamente.
o C# permite:
utilizar delegates que são muito mais flexiveis que os handlers do java.
criar classes, métodos genéricos
criar métodos anónimos
e isto é o que eu me recordo agora...
Ambas têm as suas vantagens e desvantagens....
 
boas, eu sei que são muito diferentes.
ainda há muito que me falta para dominar c# mas quero aprender java ao mesmo tempo. E isto não é bem uma questão de diferença de linguagens mas mais de como a própria classe está definida.
 
Back
Topo