Tudo fica lento porque a cpu esta occupada 100%. Se vc usa um sleep(1000) no seu while, vc aliviara a cpu e nao precisara fazer o teste sa string por que ja passou um segundo. E tambem, nao deve se fazer um addLabel cada vez....
segue o seu codigo um pouco modificado :

import java.util.*;
import java.text.*;
import javax.swing.*;
import java.awt.Container;

public class DataHora extends Thread
{
    private String dateFormat;
    private Date dt;
    private boolean stop = false;

    public void run()
    {
      JFrame frame = new JFrame();
       JLabel label = new JLabel("dd/mm/yyyy - hh:mm:ss");

       frame.getContentPane().add(label);
      frame.pack();
      frame.setVisible(true);
 

     while (!stop)
     {
       try
       {
        Thread.sleep(1000);
       }
       catch(Exception e){}

       label.setText(getDataHora());

     }

    }

    public String getDataHora()
    {
        dt = new Date(System.currentTimeMillis());
        dateFormat = "dd/mm/yyyy - hh:mm:ss";
        return (String) (new SimpleDateFormat(dateFormat).format(dt));
    }

    public void stopIt()
    {
     stop = true;
    }

    public static void main(String args[])
    {
         DataHora teste = new DataHora();
         teste.start();
         try
         {
          System.in.read();
          teste.stopIt();
         }
         catch (Exception e) {}
    }
}
 

Javanes wrote:

Caro Vitor,
Eu até consegui colocar o relógio rodando na tela, estou enviando o
código, o problema é que quando faço alguma outra ação em outros
componentes que estão no mesmo frame que a data/hora, demora muito para
serem feitas as ações, então coloquei que qualquer ação feita nesse
frame, faz com que o relógio pare e continue depois que a ação foi
realizada, não sei se é a melhor maneira, mas pelo menos resolve o
problema da velocidade.
O Código que estou enviando é apenas como colocar uma data/hora
"rodando" em um panelm, como vc tinha solicitado.

Abraços, Valdemar Lui

vitor wrote:
>
> Javanes wrote:
>
> > Caros amigos,
> >
> > Não consegui fazer com o que queria. Vou tentar explicar de novo:
> > Imaginem um frame com vários componentes, e um desses componentes é um
> > label contendo a data e a hora do sistema, se eu colocar esse label no
> > frame por último, tudo bem, porém esse label não pode ser colocado por
> > último.
> > Pergunto, alguém tem alguma idéia para se fazer isso?
> > Imaginem que esse frame é a interface da minha aplicação, e quero que
> > fique aparecendo a data e a hora, o que acontecia é que quando fazia
> > isso anteriormente a data e a hora ficavam paradas, depois consegui
> > fazê-la ficar "rodando", mas o que não consigo é mostrar esse label na
> > tela, sabendo que nesse frame existem botões, isto é, ações para serem
> > realizadas, e espero que não interfira nessas ações.
> >
> > Obrigado.
> >
>
> Deixar um relógio rodando na tela parece fácil, mas não é !
> Algumas semanas atrás eu postei uma mensagem na lista com a mesma dúvida e não
> obtive resposta. Aparentemente o problema está em avisar a JVM que o label precisa
> ser "repintado". Eu fui até o FAQ e lá se recomenda o uso dos métodos validate() e
> invalidate(), o problema é que isto não funcionou (vide código anexo).
> O pior é que pelo jeito é este mesmo o mecanismo (validate() e invalidate()), pois
> diversas outras  referências  também disseram a mesma coisa
> (http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/ e
> http://www.rgagnon.com/howto.html)
> Eu já tentei outros mecanismos (repaint(), por exemplo) mas também não funcionou.
> Se alguém quiser dar uma olhada no programa com o qual eu estou tentando resolver o
> problema ele se encontra atachado a este e-mail.
> Se alguém descobrir como fazer, por favor avisar !
>
> []s e até depois !
>
> --
> ------------------------------------------------------------------
> VITOR BRANDI JUNIOR - email: [EMAIL PROTECTED]
> FCTI - Faculdade de Ciencia e Tecnologia da Informacao
> UNIMEP - Universidade Metodista de Piracicaba
> End: Rod. do Acucar, km 156 - Piracicaba/SP - Cep: 13400-901
> Fone: 02119 4301689 - URL: http://fcti.unimep.br/pessoais/vitor
> ------------------------------------------------------------------
>
>   ------------------------------------------------------------------------
>                  Name: Teste.java
>    Teste.java    Type: JAVA Arquivo (application/x-unknown-content-type-java_auto_file)
>              Encoding: base64

  ------------------------------------------------------------------------
                    Name: DataHora.java
   DataHora.java    Type: application/x-unknown-content-type-java_auto_file
                Encoding: base64

Responder a