[Resolvido] Hora em Janela

12 respostas
Almeidaah

Olá pessoal, eu sei que essa pergunta é mais manjada do que a compra da sun pela oracle.

Mais a dúvida é a seguinte:
Eu tô criando um sistema e to tentando colocar a Hora(time atual) lá no título da janela, ou mesmo no meu painel.
Só que já busquei 800 tópicos(ou mais) e só achei pessoas falando algo assim:

Gregorian Calendar…(getInstance)
JCalendar…
Calendar…
Date…

Só que acho que de fato nenhum respondia minha dúvida. O que eu preciso é simples, colocar a hora ATUAL(quanto executar o programa), e depois ir atualizando…
13:55:10
13:55:11… Sendo que a nova data fica atualizando em cima daquela, compreendem?
Bem, estarie no aguardo de alguma ajuda, e desde já agradeço. :lol:

12 Respostas

davidbuzatto

O problema é que você não soube pesquisar. Vc quer a hora local, então basta formatar um objeto do tipo java.util.Date usando um java.text.SimpleDateFormat.
Outro detalhe é que você precisa colocar a ação de obter a data e formatá-la em uma Thread que vai executar essa ação de tempos em tempos. Mais um detalhe é que como o Swing não é thread-safe, se você tentar atualizar o componente nessa thread sem delegá-la a outra thread usada pelo método invokeLater de SwingUtilities, seu programa vai parecer estar "travado".

Acabei de fazer um exemplo, dê uma olhada. Qualquer dúvida poste ai.

import java.awt.BorderLayout;
import java.awt.Font;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

/**
 *
 * @author David Buzatto
 */
public class JFrameHora extends JFrame {

    private JLabel label;

    public JFrameHora() {

        setSize( 200, 100 );
        setTitle( "Hora" );
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        label = new JLabel();
        label.setFont( new Font( "Arial", Font.BOLD, 35 ) );
        label.setHorizontalAlignment( JLabel.CENTER );
        add( label, BorderLayout.CENTER );

        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                new Thread( new AtualizadorHora() ).start();
            }
        });

    }

    public static void main( String[] args ) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                new JFrameHora().setVisible( true );
            }
        });
    }

    private class AtualizadorHora implements Runnable {

        private SimpleDateFormat sdf;

        public AtualizadorHora() {
            sdf = new SimpleDateFormat( "HH:mm:ss" );
        }

        public void run() {
            while ( true ) {
                try {
                    label.setText( sdf.format( new Date() ) );
                    Thread.sleep( 500 );
                } catch ( InterruptedException exc ) {
                    exc.printStackTrace();
                }
            }
        }
        
    }
}
[]'s
d34d_d3v1l

ah sim… vou te mostrar um vídeo, do prof Neri… ok?

vou procurar no youtube o video correto e te mostro aqui como que faz… :smiley:

**achei…

olha ai meu amigo:

http://www.youtube.com/watch?v=4TGMYESsLAg

Obs: usando netbeans :stuck_out_tongue:

Almeidaah

Beleza pessoal, valeu pela ajuda, ovu fazer aqui e posto o resultado depois.
Obrigado.

T

d34d_d3v1l:
ah sim… vou te mostrar um vídeo, do prof Neri… ok?

vou procurar no youtube o video correto e te mostro aqui como que faz… :smiley:

**achei…

olha ai meu amigo:

http://www.youtube.com/watch?v=4TGMYESsLAg

Obs: usando netbeans :stuck_out_tongue:

Neri é um péssimo exemplo de programador Java…
Não programa do “modo certo” além de fazer muita gambiarra…

Almeidaah

Two_:
d34d_d3v1l:
ah sim… vou te mostrar um vídeo, do prof Neri… ok?

vou procurar no youtube o video correto e te mostro aqui como que faz… :smiley:

**achei…

olha ai meu amigo:

http://www.youtube.com/watch?v=4TGMYESsLAg

Obs: usando netbeans :stuck_out_tongue:

Neri é um péssimo exemplo de programador Java…
Não programa do “modo certo” além de fazer muita gambiarra…

Amigo, quando à java não sei pois não vi as aulas dlee, mais em relação à bando de dados e modelagem ele é show!

T

A do Java e do Adoble Flex é muito lixo…

d34d_d3v1l

…bom Two_, não estou aqui para discutir se o Neri é bom ou não programador… Aprendi muito com as video-aulas dele, e por ventura existe uma que tira a dúvida do nosso amigo … Então por isso postei aqui…

Agora se o jeito que ele não fez não é o correto, então ofereço minha humilde desculpa…

Abraços

Almeidaah

david e d34d :
Ambos ajudaram muito, já estou conseguindo implementar.
Muito obrigado :slight_smile:

d34d_d3v1l

fico feliz…

pode colocar o resultado aqui qndo terminar? E de preferencia mudar o nome do tópico, colocando “[resolvido]” ? Ajuda muito outros usuarios que tem a mesma duvida…
abraços

Almeidaah

Então amigo, eu coloquei na JMenuBar… porquê essa era a minha intenção… a dificuldade mesmo era como instanciar a hora, compreende?

Mais tenho mais uma dúvida, tem como eu colcoar no canto direito da JMenuBar?
Outra coisa, eu não conseigo colocar um texto antes da hora… pois dentro do meu whie(true), fica com problema de repetir a hora… Segue o código.

Tive uma solução para o primeiro questionamento assim:

jlHoraAtual.setText("                                                                                           Hora Atual : " + sdf.format( new Date() ) );

Mais isso é feio não é?

T

Almeidaah:
Então amigo, eu coloquei na JMenuBar… porquê essa era a minha intenção… a dificuldade mesmo era como instanciar a hora, compreende?

Mais tenho mais uma dúvida, tem como eu colcoar no canto direito da JMenuBar?
Outra coisa, eu não conseigo colocar um texto antes da hora… pois dentro do meu whie(true), fica com problema de repetir a hora… Segue o código.

Tive uma solução para o primeiro questionamento assim:

jlHoraAtual.setText("                                                                                           Hora Atual : " + sdf.format( new Date() ) );

Mais isso é feio não é?

Almeida ficaria legal você dividir em 2 JTextField o primeiro é um texto estatico

txtHora.setText("Hora Atual:");

o Segundo a Hora atualizada por uma tread:

txtHoraComTread.setText( sdf.format( new Date() ) );
Almeidaah

Entendo amigo, e como eu poderia colocar esses 2 “textFields” no lado direito da JMenuBar?

Criado 5 de fevereiro de 2011
Ultima resposta 5 de fev. de 2011
Respostas 12
Participantes 4