Olá pessoal… Blz?! :thumbup: :thumbup: :thumbup:
Estou tentando gerar um relóginho e data para colocar em dois JTextField(), tentei fazer como esse nosso amigo aconselhou:http://www.guj.com.br/posts/list/113444.java
Deu certo mas não consigo ‘quebrar’ o resultado em dois JLabels e com o métoddo substring() deu erro. Gente como modificar essa classe para dar o resultado em dois JLabel() :?: :?: :?:
Valeu gente! :thumbup: :thumbup: :thumbup:
Olha aí:
[code]public class PainelRelógio extends JPanel {
private JLabel hora;
private JLabel data;
public PainelRelógio() {
super();
hora=new JLabel();
data= new JLabel();
new Thread(){
public void run(){
this.setPriority(Thread.MIN_PRIORITY);
Calendar calendar;
while (true){
calendar=Calendar.getInstance();
hora.setText(getHora(calendar));
data.setText(getData(calendar));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private String getHora(Calendar calendar){
return calendar.get(Calendar.HOUR_OF_DAY)+":"+
calendar.get(Calendar.MINUTE)+":"+
calendar.get(Calendar.SECOND);
}
private String getData(Calendar calendar){
return calendar.get(Calendar.DAY_OF_MONTH)+"/"+
calendar.get(Calendar.MONTH)+"/"+
calendar.get(Calendar.YEAR);
}
}.start();
this.add(hora,BorderLayout.NORTH);
this.add(data,BorderLayout.SOUTH);
}
static public void main(String a[]){
JFrame frame=new JFrame("Relógio");
frame.setContentPane(new PainelRelógio());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
}
}[/code]
Não sei se é a melhor forma, mas funciona. Só me preocupei em fazer funcionar, vc deve criar uma condição em vez de criar um loop infinito na thread, de forma que quando o componete que possuir o relógio feche, a Thread encerre. Além disso, caso seu relógio só tenha minutos e não segundos, vc poderia colcar a Thread pra dormir um minuto, em vez de um seg que eu coloquei.
Eu me lembro de um cara que fez um componente de relógio, mas acho que era com uma figura analogico, e colocou o código em um post do GUJ. Dá uma procurada…
Ficou bom mas… a data e a hora não ficam formatadas, tentei de tudo. A data sempre mostra um dia a menos do real, se ajusta o relógio para fevereiro e marca mês 1, se ajusta para janeiro ele marca mês 0 (zero).

O mês aqui tb estava errado, mas é coisa da API que começa no zero. O dia ta saindo correto aqui. pra consertar o mes, fiz a alteração:
private String getData(Calendar calendar){
return calendar.get(Calendar.DAY_OF_MONTH)+"/"+
(calendar.get(Calendar.MONTH)+1)+"/"+
calendar.get(Calendar.YEAR);
Você quer que o que apareça em cada Label? Em um a data e em outro o horário? Se sim, na linha 37 do código de ajfilho na outra página, você pode separar: ao invés de concatenar e colocar e em um Label, basta fazer separado:
lbHora.setText(sdf.format(d));
lblData.setText(data.toString());
Ah, para a data vc também pode usar a classe Date em conjunto com um DateFormatter, dá uma pesquisada no GUJ sobre essa classe que vc acha.