Vou passar uma ideia.
Use a classe Timer e a classe Date.
Como a classe Timer tem um temporizador, você consegue a cada 1s executar um conjunto de instruções.
Com a classe Date, você pega a hora do sistema e a imprime.
Só isso.
Ou você pode se dispor a criar um método que a partir de um momento inicial atualize horas, minutos e segundos, por meio da classe Timer também.
Ex. preferindo a classe Calendar:
Tenho esse código abaixo que eu utilizava para fazer este efeito de data/hora em tempo real, para isso é preciso a utilização de threads.
publicclassHorarioUtilextendsThread{//classe utilizada para atualização da data/horaprivateJLabelhr;privatebooleanmostrarData;publicHorarioUtil(JLabelhora){this.hr=hora;}publicvoidmostrarData(booleanmostrar){if(mostrar){this.mostrarData=true;}else{this.mostrarData=false;}}@Overridepublicvoidrun(){try{while(true){Dated=newDate();StringBufferdata=newStringBuffer();if(mostrarData){SimpleDateFormatsdfData=newSimpleDateFormat("dd/MM/yyyy");data.append(sdfData.format(d));data.append(" - ");}SimpleDateFormatsdf=newSimpleDateFormat("HH:mm:ss");this.hr.setText(data.toString()+sdf.format(d));Thread.sleep(1000);this.hr.revalidate();}}catch(InterruptedExceptionex){System.out.println("Problema na atualização da data/hora");ex.printStackTrace();}}}publicvoidmostrarHora(){// método de chamada para atualização da horaHorarioUtilhorarioUtil=newHorarioUtil(meuJlabelHora);horarioUtil.mostrarData(true);ThreadthHora=horarioUtil;thHora.start();}
L
lvbarbosa2 likes
Uma approach diferente das já apresentadas:
importjavax.swing.*;importjava.awt.*;importjava.time.LocalTime;importjava.time.format.DateTimeFormatter;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassMain{privatestaticfinalScheduledExecutorServicebackground=Executors.newSingleThreadScheduledExecutor();publicstaticvoidmain(String[]args){// configuração da janelaJFramejanela=newJFrame("Window");JLabellblHora=newJLabel();janela.setLayout(newFlowLayout());janela.setBounds(0,0,200,50);janela.add(lblHora);janela.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);janela.setVisible(true);// ---------------------longdelayInicial=0;longintervaloDeInvocacao=1;TimeUnitsegundos=TimeUnit.SECONDS;DateTimeFormatterformatter=DateTimeFormatter.ofPattern("hh:mm:ss");Runnabletarefa=()->SwingUtilities.invokeLater(()->lblHora.setText(LocalTime.now().format(formatter)));background.scheduleAtFixedRate(tarefa,delayInicial,intervaloDeInvocacao,segundos);}}
V
Vonquelbe_Cruz
// Data e hora atualJLabellblData=newJLabel();JLabellblHora=newJLabel();lblData.setBounds(10,12,70,20);lblHora.setBounds(10,37,60,20);Threadth=newThread(newRunnable(){//cria uma threadpublicvoidrun(){while(true){//roda indefinidamenteDatedata=Calendar.getInstance().getTime();DateFormatd=DateFormat.getDateInstance();DateFormath=DateFormat.getTimeInstance();lblData.setText(d.format(data));lblHora.setText(h.format(data));try{Thread.sleep(1000);//espera 1 segundo para fazer a nova evolução}catch(InterruptedExceptionex){}}}});th.start();