Java data e hora? Me ajudem

19 respostas
java
P

Eu consigo pegar a data e hora e eu coloquei o resultado para setar em uma label, o problema é que a hora ela não fica contínua tipo 10…11…12 segundos para que a hora atualize eu tenho que reabrir o sistema, tem como eu fazer isso automaticamente em precisar ficar abrindo a aplicação?

19 Respostas

Jonathan_Medeiros

Segue um exemplo antigo que tenho aqui para ficar atualizando a Data/Hora.

public class HorarioUtil extends Thread {  
  
    private final JLabel hr;  
    private boolean mostrarData;  
  
    public HorarioUtil(JLabel hora) {  
        this.hr = hora;  
    }  
  
    public void mostrarData(boolean mostrar) {  
        this.mostrarData = mostrar;  
    }  
  
    @Override  
    public void run() {  
        try {  
            while (true) {  
                Date d = new Date();  
                StringBuilder data = new StringBuilder();  
               
                if (mostrarData) {  
                    SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");  
                    data.append(sdfData.format(d));  
                    data.append(" - ");  
                }  
                
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");  
                this.hr.setText(data.toString().concat(sdf.format(d)));  
                HorarioUtil.sleep(1000);  
                this.hr.revalidate();  
            }  
        } catch (InterruptedException ex) {  
            System.out.println("Problema na atualização da data/hora!");  
        }  
    }  
}

O uso seria da seguinte forma:

HorarioUtil horarioUtil = new HorarioUtil(seuJLabel);
horarioUtil.mostrarData(true); // true exibe data/hora e false exibe hora
Thread thHora = horarioUtil;
thHora.start();
P

Para que serve thread?

Jonathan_Medeiros

Conhece o conceito de thread?

A ideia de uma thread é poder executar um ou mais processos de forma paralela, no caso do exemplo que te passei acima, a thread é a responsável por manter a data/hora sendo atualizada em tempo real dentro da aplicação sem impactar em demais ações do usuário.

P

Seria o mesmo significado de Threads em Sistemas Operacionais?

P

Mais porque tem dois métodos de parâmetros ???

Jonathan_Medeiros

Mesma coisa, thread é thread em qualquer lugar!

Jonathan_Medeiros

Um método é o construtor da classe e o outro é para habilitar e desabilitar a data de ser exibida juntamente com o horário!

P

Qual a diferença do JLabel para o Label? ta dando erro de incompatibilidade?

P

Estou usando JavaFx talvez seja isso!

Jonathan_Medeiros

JLabel é componente do Swing e Label do JavaFx, de toda forma, acredito que tu consegue adaptar este código aí para funcionar com javaFx.

staroski

Quase.
No sistema operacional uma Thread gera um PID.
No Java não, no Java você terá um processo executando concorrentemente dentro da máquina virtual, sem gerar um PID no sistema operacional.

staroski

JLabel é da API Swing.
Label é da API AWT.

Jonathan_Medeiros

Acredito que esse cara seja do scene do JavaFx, não?

staroski

Não sei, ele não disse o pacote.

Jonathan_Medeiros

Justo!

P

Sim acho que tem relação com o Scenne Builder, pois eu criei a label la, eu criei uma classe igual a de cima mais deu erro, até porque uma label nao consegue dar um repaint () / revalidate()…

Jonathan_Medeiros

No seu caso acho que pode remover a linha que faz a chamada do revalidate(), acredito que só o setText para o Label já deva funcionar.

Qualquer dificuldade, aqui tem um exemplo com JavaFx.

P

Mas como ficaria? Tente aqui e também não consegui kskskskksksk

Jonathan_Medeiros

Cara, pior que se tratando de JavaFx não consigo te orientar, pois nunca utilizei nem trabalhei com ele!

Tem uma outra galera no fórum que tem um conhecimento bem bacana à respeito, talvez os demais membros consigam te orientar.

Criado 21 de março de 2020
Ultima resposta 23 de mar. de 2020
Respostas 19
Participantes 3