Relogio java sem interface grafica

7 respostas
A

oi preciso fazer um radio relogio que é executado no dos e mostra a hora no dos que se atualiza a cada segundo so sem usar nenhuma classe que tem no java eu sei que tem um metodo que faz isso mas não sei qual que é se aluem puder me ajudar

7 Respostas

dm_thiago

Cria uma thread e usa o método sleep(milisegundos). Usa um contador (ou 3, um para segundos, um para minutos e um para horas) e vai imprimindo o tempo a cada segundo.

A

sim atai ai eu sei so que eu preciso que ele apague e escreva denovo ou de uma especie de repaint()
mas não posso usar interface grafica e não sei qual o metodo para fazer isso se puder me ajudar agradeço

T

Atenção: se rodar isto no Eclipse, vai ver que ele escreve cada data e hora em linhas separadas. Se rodar no DOS ele faz o que você quer.

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Relogio {
	public static void main(String[] args) {
		System.out.println ("Relogio");
		System.out.println ("Tecle Ctrl+C para interromper...");
		DateFormat df = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss");
		while (true) {
			try { Thread.sleep (500); } catch (InterruptedException ex) {}
			System.out.print ("\r" + df.format (new Date()));
		}
	}
}
dm_thiago

Eu tinha pensando em algo um pouco mais orientado a objetos, com métodos e tal. Tipo:

public class Relogio {
	
	private int segundos;
	private int minutos;
	private int horas;
	
	
	public Relogio ()
	{
		segundos = 0;
		minutos = 0;
		horas = 0;
	}
	
	public void addSegundo()
	{
		segundos++;
		if (segundos == 60)
		{
			segundos=0;
			this.addMinuto();
		}
	}
	
	public void addMinuto()
	{
		minutos++;
		if (minutos == 60)
		{
			minutos=0;
			this.addHora();
		}
	}
	
	public void addHora()
	{
		horas++;
	}
	
	public void comecar()
	{
		System.out.println("Inicio relógio");
		while (true)
		{
			//dorme um segundo
			try {Thread.sleep(1000);} 
			catch (InterruptedException e) {}
			
			//adiciona um segundo ao contador
			this.addSegundo();
			
			//imprime a hora
			System.out.println(horas+":"+minutos+":"+segundos);			
		}
	}
	
	public static void main (String[] args)
	{
		(new Relogio()).comecar();
	}
}

Thingol, o sleep não deveria ser de 1000?
E também tinha pensando mais em algo tipo contador de tempo, e não relógio em si mesmo =P

T

Se você puser “1000” vai ver que de vez em quando o computador vai pular 1 segundo. Eu uso 500 para evitar ficar errado dessa maneira.

KWill

Ok, aqui vai uma dica:

Nos terminais de texto, o caractere ‘\r’ normalmente reposiciona o cursor para o começo da linha.

Outra dica:

Chamar System.out.print() não coloca o caractere ‘\n’ no final da linha…

Assim, não é preciso dar “repaint” no terminal de texto, o ‘\r’ vai deixar o cursor no começo da linha e tu pode escrever a hora nele novamente.

Até mais.

denisspitfire

e para sair o mesmo codigo em um TextField?

Criado 27 de março de 2008
Ultima resposta 15 de ago. de 2011
Respostas 7
Participantes 5