Relógio

11 respostas
Alan_Delgado

Ola pessoal !!

sou novo em java, e to com uma dúvida, como eu faria um relógio em java?, estou tentando desenvolver mais não esta adiantando, não sei quais funções usar…se alguem poder me ajudar, muito obrigado !!!

valeu!

11 Respostas

nielsen.tekla

se o que vc esta pensando em fazer é um cronometro
use esse codigo aqui

/**

  • Engenharia da Computação
  • Descrição: Cria um cronometro
  • Data: 23/08/2007
    */
    package SdkN.Contador;

/**

  • @author Nielsen
*/

public class Cronometro implements Runnable

{

private long inicio;
private long minuto;
	
private long segundo;

private long milisegundo;

public Cronometro()
{
	inicio = 0;
	milisegundo = 0;				
	new Thread(this).start();
}
public void run()
{
	inicio = System.currentTimeMillis();
}
/**
 * Retorna o tempo em milissegundos
 */
public long milissegundos()
{
	synchronized (this)
	{
		return milisegundo = System.currentTimeMillis() - inicio;
	}
}
/**
 * Retorna o tempo em segundos
 */
public long segundos()
{
	synchronized (this)
	{
		return  segundo = milissegundos() /1000;
	}
}
/**
 * Retorna o tempo em minutos
 */
public long minuto()
{
	synchronized (this)
	{
		return minuto = milissegundos()/100000;
	}
}

}

Alan_Delgado

tenho uma duvida, para que serve o :

inicio = System.currentTimeMillis();

valeu…

RaulCarlin

Este método te retorna um long com os millisegundos atuais do seu sistema(SO)…

Ironlynx
Um velho exemplo(adapte a sua necessidade):
import javax.swing.*; 
 import java.awt.*; 
 import java.awt.event.*; 
 import java.util.*; 
 import javax.swing.JPanel;
 import javax.swing.JFrame;
 
 public class Clock implements ActionListener { 
 
    private javax.swing.Timer timer; 
    private Date data; 
    private JLabel label=new JLabel();; 
    private static JFrame frame=new JFrame("Relógio"); 
 
    public Clock(){ 
       montaTela();
       disparaRelogio(); 
    } 
    public void montaTela(){
    	  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        
       label.setFont(new Font("Itálico", Font.ITALIC, 25)); 
       JPanel panel = new JPanel(); 
       panel.add(label); 
       panel.setLayout(new FlowLayout(FlowLayout.CENTER)); 
       
       frame.getContentPane().add(panel); 
 
       frame.setResizable(false); 
       frame.setBounds(250, 200, 150, 80); 
       frame.setLocationRelativeTo(null);
       frame.setVisible(true); 
    	} 
 
    public void disparaRelogio() { 
       if (timer == null) { 
          timer = new javax.swing.Timer(1000, this); 
          timer.setInitialDelay(0); 
          timer.start(); 
       } else if (!timer.isRunning()) { 
          timer.restart(); 
       } 
    } 
 
    public void actionPerformed(ActionEvent ae) { 
       GregorianCalendar calendario = new GregorianCalendar(); 
       int h = calendario.get(GregorianCalendar.HOUR_OF_DAY); 
       int m = calendario.get(GregorianCalendar.MINUTE); 
       int s = calendario.get(GregorianCalendar.SECOND); 
 
       String hora = 
          ((h < 10) ? "0" : "") 
             + h 
             + ":" 
             + ((m < 10) ? "0" : "") 
             + m 
             + ":" 
             + ((s < 10) ? "0" : "") 
             + s; 
 
       label.setText(hora); 
    } 
    public static void main(String args[]) {
    	     try{
    	     javax.swing.SwingUtilities.invokeLater(new Runnable() {
             public void run() {	
    	         new Clock();}
                      });  
    	         }
    	     catch(Exception e){
    	     	e.printStackTrace();
    	     	System.err.println("ERRO interno de execução!");
    	     	}     
    } 
 }
ViniGodoy

O post abaixo, e os dois após ele (página 2), mostram 3 maneiras diferentes de se fazer isso:
http://www.guj.com.br/posts/list/52964.java#279083

A última é a mais simples.

Alan_Delgado

valeu ViniGodoy!
achei legal a ultima, era mais ou menos isto que eu tava querendo…mas sera que nao teria como criar um cronometro que poderia parar na que quiser com um botão, alguem saberia me dizer?
bom valeu…

ViniGodoy

A última classe Timer descrita, do Swing, tem o método stop.

Alan_Delgado

nielsen.tekla:
se o que vc esta pensando em fazer é um cronometro
use esse codigo aqui

/**

  • Engenharia da Computação
  • Descrição: Cria um cronometro
  • Data: 23/08/2007
    */
    package SdkN.Contador;

/**

  • @author Nielsen
*/

public class Cronometro implements Runnable

{

private long inicio;
private long minuto;
	
private long segundo;

private long milisegundo;

public Cronometro()
{
	inicio = 0;
	milisegundo = 0;				
	new Thread(this).start();
}
public void run()
{
	inicio = System.currentTimeMillis();
}
/**
 * Retorna o tempo em milissegundos
 */
public long milissegundos()
{
	synchronized (this)
	{
		return milisegundo = System.currentTimeMillis() - inicio;
	}
}
/**
 * Retorna o tempo em segundos
 */
public long segundos()
{
	synchronized (this)
	{
		return  segundo = milissegundos() /1000;
	}
}
/**
 * Retorna o tempo em minutos
 */
public long minuto()
{
	synchronized (this)
	{
		return minuto = milissegundos()/100000;
	}
}

}


tentei compilar este programa mas nao deu certo, primeiro estava dando erro no main (pois faltava…), mas despois de eu ter colocado um main, esta dando erros…

Alan_Delgado

nao achei este metodo stop,:frowning: eu digo se teria um jeito de fazer uma especie de cronometro que eu poderia parar na hora que deseja se… ainda num tenho muitos conceitos de java, ainda tem muitas funções que não conheço, ai é meio foda…mais valeu.

ViniGodoy

Que erros?

Alan_Delgado

esta dando que o erro "Exception in thread “main” java.lang.NoclassDefFoundError: Cronometro…

nao sei onde que esta errado…:frowning:

Criado 10 de outubro de 2007
Ultima resposta 16 de out. de 2007
Respostas 11
Participantes 5