Newsgroup: it.comp.java
Titolo: Problemi con SwingUtilities (lunghetto)

Gentili Ragazzi/e
Ho un problema con SwingUtilities: ho un interfaccia grafica con un
JTextField che deve aggiornare un valore preso da un file, ogni
qualvolta il file cambia, il valore cambia e l'interfaccia grafica deve
aggiornare il valore.
Nel System.out il dato lo visualizzo , ma nonostante usi
SwingUtilities.invokeLater non riesco ad aggiornare l'interfaccia
grafica :(
Ho provato a leggermi i tutorial su Swing Worker, ma non mi è chiaro
in quali classi mettere i vari pezzi di codice...
Come posso fare?
Nella Classe3 (che quello che tira fuori il dato) devo fare qualcosa?
Vi descrivo la struttura delle classi ed un po' di codice:
Principale (Main Class)
Class1 (interfaccia Grafica)
Class2 (Controlla che se il file è cambiato)
Class3 (trova il dato nel file)
//***PSEUDO CODE ***
public class Principale {
  public static void main(String[] args) {
    final Class1 mov = new Class1();
    final Class2 FWT = new Class2();
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        mov.jTextField1.setText(FWT.misura_letta);
      }
    });
	}
}
public class Class1 extends JPanel {
    JTextField jTextField1;
    Class1(){
        jTextField1 = new javax.swing.JTextField();
        JPanel Panel2 = new JPanel();
        Panel2.add(jTextField1);
        JFrame f = new JFrame("Interfaccia Grafica");
        f.getContentPane().add(Panel2);
        f.pack();
        f.setVisible(true);
    }
}
class Class2 implements Runnable {
   Thread readThread;
   public String misura_letta ="";
   public Class2(){
	readThread = new Thread(this);
	readThread.start();
   }
 public void run() {
  try {
    Thread.sleep(20000);
    TimerTask task = new FileWatcher( new
File("DaSerialeAll_prova.txt") ) {
      protected void onChange( File file ) {
        System.out.println( "File "+ file.getName() +" have change !"
);
        Class3 CTDF = new Class3();
        misura_letta = CTDF.str;
	System.out.println("misura letta: " +misura_letta);
      }
    };
    java.util.Timer timer = new java.util.Timer();
    timer.schedule(  task , new Date(), 10 );
  } catch (InterruptedException e) {}
 }
}
public class Class3 {
  String str ="";
  public  Class3 () {
  //  (...) legge un file e mette nella stringa str il dato da
visualizzare nell'interfaccia grafica
  str = str.trim();
  }
}
//*** fine PSEUDO CODE ***
Grazie a tutti
Sal

...Dimenticavo, uso la versione di Java 1.4.2 perchè il mio prog
comunica con la porta seriale e con l'ultima versione ci sono dei
problemi con la libreria comm.jar.
Questo però mi da dei problemi con SwingWorker, che nella versione che
uso non è inserita.
L'ho aggiunta nelle librerie esterne ma le chiamate con parametri
SwingWorker<Par1, Par2> non sono supportate.
Mi sono letto questi articoli:
http://java.sun.com/jsp_utils/PrintPage.jsp?url=http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
http://java.sun.com/jsp_utils/PrintPage.jsp?url=http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html
ma non mi sono stati di aiuto  (per mia ignoranza credo) :(
In sintesi sto cercando di aggiornare un interfaccia grafica il cui
evento scatenante non è un evento classico (Click Mouse) ma  quando
viene modificato un file, trovo una stringa in questo file e poi la
voglio far visualizzare in una JTextField.
Ho capito che devo usare SwingUtilities ma non compreso bene il
meccanismo.
Grazie ancora a chi ha avuto la pazienza di leggermi.
Sal