Serio gente, n fasso ideia.
Minha classe que da a hora
public class Hora implements Runnable {
Apresentacao a = null;
public Hora(Apresentacao a){
this.a = a;
Thread t = new Thread();
t.start();
}
@Override
public void run() {
while(true){
Date d = new Date();
this.a.setHora("Funciona");
try{
Thread.sleep(10000);
}catch(Exception e){
System.err.println("Erro na parada do tempo");
}
}
}
}
na minha classe de apresentacao fiz o metodo
//meus metodos
public void setHora(String hora){
horaDigital.setText(hora);
}
e tenho tbm no construtor
public Apresentacao() {
super();
Hora h = new Hora(this);
initialize();
}
Mas quando eu executo ele, a tela trava, e olha q to usando linux com fedora eclipse 3.3.1, travar aki e coisa rara.
Alguem pode me dizer oque esta errado, n consigo entender.
Acho que vc confundiu as bolas amigo. No seu construtor vc cria uma Thread que não faz nada. Pq em vez de estender de Runnable, vc nao estendeu direto de Thread?
Aí no seu construtor, vc colocaria:
super();
this.a=a;
this.start();
Pelo que entendi, acho que esse código estaria condizendo com o que vc quer.
Se vc usar a Runnable, vc teria que passar sua classe no construtor de uma Thread para que ela executasse em outra linha de execução…
Vai uma idéia geral:
[code]public class Relogio extends JFrame {
private JLabel label;
public Relogio(){
super(“Relógio”);
label=new JLabel();
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(label, BorderLayout.CENTER);
this.setContentPane(panel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(200, 200);
new RelogioThread(label).start();
}
static public void main(String[] a){
new Relogio();
}
}
[/code]
[code]public class RelogioThread extends Thread {
private JLabel label;
public RelogioThread(JLabel label){
this.label=label;
}
public void run(){
int segundos=0;
while(true){
try {
label.setText("segundos: "+segundos);
Thread.sleep(1000);
++segundos;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
[/code]