Newsgroup: it.comp.java
Titolo: Aiuto per un thread

Ciao a tutti,
sono un novizio "totale" di Java ed avrei bisogno di una mano per capire 
bene come funzionano i Thread(s).
Vorrei fare in modo, in una applet, che in una Label venga visualizzato una 
sorta di "cronometro" che viene avviato cliccando sulla applet.
La label dovrebbe aggiornarsi ogni secondo, segnando il tempo trascorso 
(poco importa il formato).
Ho pensato di utilizzare un thread per l'aggiornamento della label, ma...non 
succede niente !
Eccovi il codice:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class cronometro extends Applet implements Runnable, MouseListener {
Panel contenitore=new Panel();
Label quadrante=new Label();
public void init() {
    this.add(contenitore);
    contenitore.add(quadrante);
    this.addMouseListener(this);
}
 public void run() {
      while (true){
          double adesso=System.currentTimeMillis()/1000;
          quadrante.setText(adesso+"");
          try {
               wait (1000);
          } catch (InterruptedException e) {
 }
 }
 }
 public void mouseClicked(MouseEvent arg0) {
 }
 public void mousePressed(MouseEvent evt) {
 quadrante.setText("partito!!");
 Thread vai = new Thread();
 vai.start();
 }
 public void mouseReleased(MouseEvent arg0) {
 }
 public void mouseEntered(MouseEvent arg0) {
 }
 public void mouseExited(MouseEvent arg0) {
 }
}
Qualche "anima pia" può darmi una mano ?
Dove sbaglio ? Perchè la Label "quadrante" non si aggiorna facendomi vedere 
il tempo che passa ?
Penso che per molti di voi la soluzione sia banale, quindi vi ringrazio in 
anticipo per la pazienza.
Chris

  vai.start();
Divi dire
Thread vai = new Thread(this);
vai.start();
cooe' passare un un Runnable (in questo caso l oggetto corrente alla
thread)
altrimenti stai eseguendo il metodo run della classe Thread che non fa
ssolutamente nulla
Inoltre: devi dire sleep(1000) non wait (1000)
wait serve per sincronizzare l;e threade non c'entra nulla qui!
Inoltre:
creare una thread ogni volta che clicchi con il mouse e' una pessima
idea, potresti farlo
nell init
Ti ho corretto gli errori cercando di manterener il piu possibile il
tuo codice ma usando un frame invece di uan applet. Non cambia nulla e'
solo per comodita'.
import javax.swing.*;
import java.awt.Dimension;
import java.awt.event.*;
import java.util.Date;
import javax.swing.JPanel;
import sun.rmi.runtime.NewThreadAction;
public class ThreadPanel  extends JPanel implements Runnable,
MouseListener {
JPanel contenitore=new JPanel();
JLabel quadrante=new JLabel();
public ThreadPanel()
{
	init();
}
public void init() {
    this.add(contenitore);
    contenitore.add(quadrante);
    this.addMouseListener(this);
}
 public void run() {
      while (true){
          long adesso=System.currentTimeMillis();
          Date d = new Date(adesso);
          quadrante.setText(d.toString());
          try {
               Thread.sleep (1000);
          } catch (InterruptedException e) {
 }
 }
 }
 public void mouseClicked(MouseEvent arg0) {
 }
 public void mousePressed(MouseEvent evt) {
 quadrante.setText("partito!!");
 Thread vai = new Thread(this);
 vai.start();
 }
 public void mouseReleased(MouseEvent arg0) {
 }
 public void mouseEntered(MouseEvent arg0) {
 }
 public void mouseExited(MouseEvent arg0) {
 }
public static void main(String[] args)
{
	JFrame frame = new JFrame();
	frame.add(new ThreadPanel());
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setSize(new Dimension(300,300));
	frame.setVisible(true);
}
 
}

 ha scritto nel messaggio 
news:1137346997....@f14g2000cwb.googlegroups.com...
