Ir ao conteúdo
  • Cadastre-se

mostrar a data e hora atualizados na tela


Posts recomendados

Boa tarde,

 

Amigos, comecei a pouco em Java e testando. Quero mostrar a data e hora atualizados na tela. Fiz o seguinte frame:

 

 
import java.util.Calendar;import java.util.GregorianCalendar;public class Principal1 extends javax.swing.JFrame {        public Principal1() {        initComponents();        new Thread(){            //Sobre carrega o método run            @[member="override"]            public void run(){                // Cria um loop eterno                for( ; ; ){                    // Executa o método dataEHora                    dataehora();                                        try{                        //Retarda a execução em 1000 milisegundo(1 segundo)                        sleep(1000);                    }catch(InterruptedException ie){                        // Se existir uma exceção exibe a mesma                        ie.printStackTrace();                    }                }            }        // Executa a Thread        }.start();    }        @SuppressWarnings("unchecked")    // <editor-fold defaultstate="collapsed" desc="Generated Code">                              private void initComponents() {        jlData = new javax.swing.JLabel();        jlHora = new javax.swing.JLabel();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        setTitle("Cliente - Tela Principal");        jlData.setText("Data");        jlHora.setText("Hora");        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());        getContentPane().setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()                .addContainerGap()                .addComponent(jlData)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)                .addComponent(jlHora)                .addContainerGap(205, Short.MAX_VALUE))        );        layout.setVerticalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(jlData)                    .addComponent(jlHora))                .addContainerGap(50, Short.MAX_VALUE))        );        pack();    }// </editor-fold>                                public void dataehora(){       // Cria um novo calendário no formato Grego       Calendar cal = new GregorianCalendar();       // Captura o dia atual        int dia = cal.get(Calendar.DAY_OF_MONTH);       // Captura o mês atual       int mes = cal.get(Calendar.MONTH);       // Captura o ano atual       int ano = cal.get(Calendar.YEAR);              // Captura a hora atual       int hora = cal.get(Calendar.HOUR);       // Captura o minuto atual       int minuto = cal.get(Calendar.MINUTE);       // Captura o segundo atual       int segundo = cal.get(Calendar.SECOND);              // Seta a data e a hora nos rótulos adequados       jlData.setText(String.valueOf(+dia+"/"+mes+"/"+ano));       jlHora.setText(String.valueOf(+hora+":"+minuto+":"+segundo));           }        public static void main(String args[]) {        /* Set the Nimbus look and feel */        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html          */        try {            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {                if ("Nimbus".equals(info.getName())) {                    javax.swing.UIManager.setLookAndFeel(info.getClassName());                    break;                }            }        } catch (ClassNotFoundException ex) {            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);        } catch (InstantiationException ex) {            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);        } catch (IllegalAccessException ex) {            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);        } catch (javax.swing.UnsupportedLookAndFeelException ex) {            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);        }        //</editor-fold>        /* Create and display the form */        java.awt.EventQueue.invokeLater(new Runnable() {            public void run() {                new Principal1().setVisible(true);            }        });    }    // Variables declaration - do not modify                         private javax.swing.JLabel jlData;    private javax.swing.JLabel jlHora;    // End of variables declaration                   }
 
 
Notem que ele mostra a data com um mês atrasado e a hora não mostra no padrão 24h!
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá jefersonab.

 

Poderia explicar pra leigo, por favor? Como poderia corrigir?

 

 

Vou tentar comentar um pouco sobre o que eu entendi da sugestão:
 

1) Calendar.MONTH retorna o mes a partir de janeiro = 0 até dezembro = 11
 
2) Calendar.HOUR retorna a hora obedecendo o padrão 12 AM/PM, Calendar.HOUR_OF_DAY retorna a hora obedecendo o padrão 24.

 
1) em vez de 1 a 12, essa variável retorna de 0 a 11, ou seja, precisa ajustar a diferença. (somar mais uma ao valor obtido). :)

2) o comando que você está usando, retorna no formato de "12 horas". Já o outro comando, retornar em 24. (troque de comando)

 
E sobre as APIs...

 

De uma forma mais leiga (eu também não entendo muito), essa tal de API, seria apenas "uma documentação de como funciona a Interface de Programação de Aplicações (API)", ou seja, ela detalha o funcionamento de cada classe, no caso no especificamente desse Java SE.

 

Acho que tem uma mais recente... (não muda muita coisa de uma para outra, mas sempre deve-se pesquisar de acordo com a versão do seu Java JDK).

 

DICA DE USO

Entre nesse site:

http://docs.oracle.com/javase/7/docs/api/  (ou esse http://docs.oracle.com/javase/6/docs/api/, ou esse http://docs.oracle.com/javase/8/docs/api etc)

 

 

Pressione Ctrl+F e pesquise pela classe que deseja, no caso Calendar. Você deve clicar na coluna de baixo da esquerda... (em alguns casos não acha de primeira, já que podem ter outras classes que contenham o nome pesquisado, basta continuar pesquisando)
ou

Navegue até encontrar, no caso, clique na primeira coluna em java.util. (pacote onde está essa classe, daí você pode até ver as outras classes que estão nesse pacao ;)), depois clique em Calendar na coluna de baixo...

 

Ou seja, simplesmente você tem que achar a classe que você quer...

 

Então... não consigo agora explicar exatamente como está estruturado o documento, mas ele é bastante intuitivo... apenas está em inglês. De preferência dê uma olhada nas classes que você já conhece... rapidinho você acostuma...

 

Obs.: Existem versões em português, como esta, http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk5-api-pt-br/builds/latest/html/pt_BR/api/, mas SUGIRO UTILIZAR AS EM INGLÊS... utilize essa apenas para ter uma base... (se não souber inglês, assim como eu, use o Google Translator)

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...