Pessoal, eu já sei como fazer para pegar uma data e a hora mas gostaria que a hora fosse como um relógio digital ao rodar meu programa a hora a parece e os segundos ficam mudando, teria como fazer isso?? não tenho idéia de como fazer alguém poderia me ajudar??
Espero que tenhan entendido…
UA
Darta
De uma estudada em Threads
Dá uma bisoiada:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class Clock implements ActionListener {
private javax.swing.Timer timer;
private Date data;
private JLabel label=new JLabel();;
private static JFrame frame=new JFrame("Relógio");
public Clock(){
montaTela();
disparaRelogio();
}
public void montaTela(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label.setFont(new Font("Itálico", Font.ITALIC, 25));
JPanel panel = new JPanel();
panel.add(label);
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.getContentPane().add(panel);
frame.setResizable(false);
frame.setBounds(250, 200, 150, 80);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void disparaRelogio() {
if (timer == null) {
timer = new javax.swing.Timer(1000, this);
timer.setInitialDelay(0);
timer.start();
} else if (!timer.isRunning()) {
timer.restart();
}
}
public void actionPerformed(ActionEvent ae) {
GregorianCalendar calendario = new GregorianCalendar();
int h = calendario.get(GregorianCalendar.HOUR_OF_DAY);
int m = calendario.get(GregorianCalendar.MINUTE);
int s = calendario.get(GregorianCalendar.SECOND);
String hora =
((h < 10) ? "0" : "")
+ h
+ ":"
+ ((m < 10) ? "0" : "")
+ m
+ ":"
+ ((s < 10) ? "0" : "")
+ s;
label.setText(hora);
}
public static void main(String args[]) {
try{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Clock();}
});
}
catch(Exception e){
e.printStackTrace();
System.err.println("ERRO interno de execução!");
}
}
}
b_m_a_
Junho 25, 2011, 7:56pm
#4
Ai galera, tudo beleza?
Eu fiz um relogio digital em java numa class que extende de JPanel pa poder ser chamada noutro frame, mas nao to conseguindo fazer funcionar
alguem me ajude
public class Clock extends JFrame implements Runnable {
private JLabel clock;
public Clock() {
clock = new JLabel();
clock.setFont(new Font("Arial", Font.BOLD, 22));
this.add(clock);
setVisible(true);
setBounds(250, 200, 150, 80);
this.showClock();
}
public void showClock() {
String s;
Format formatter;
while (true) {
Date date = new Date();
// Time formate 14.36.33
formatter = new SimpleDateFormat("HH:mm:ss a");
s = formatter.format(date);
clock.setText(s);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void run() {
this.showClock();
}
eu quero que este Panel seja chamado noutra class JFrame e que o relogio fique ali mudando os segundos, funcionando direitinho
quando eu mudo a class do Clock() para extender a um Frame ele funciona certinho.
ajudem-me