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?
Java data e hora? Me ajudem
19 Respostas
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();
Para que serve thread?
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.
Seria o mesmo significado de Threads em Sistemas Operacionais?
Mais porque tem dois métodos de parâmetros ???
Mesma coisa, thread é thread em qualquer lugar!
Um método é o construtor da classe e o outro é para habilitar e desabilitar a data de ser exibida juntamente com o horário!
Qual a diferença do JLabel para o Label? ta dando erro de incompatibilidade?
Estou usando JavaFx talvez seja isso!
JLabel é componente do Swing e Label do JavaFx, de toda forma, acredito que tu consegue adaptar este código aí para funcionar com javaFx.
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.
JLabel é da API Swing.
Label é da API AWT.
Acredito que esse cara seja do scene do JavaFx, não?
Não sei, ele não disse o pacote.
Justo!
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()…
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.
Mas como ficaria? Tente aqui e também não consegui kskskskksksk
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.