Newsgroup: it.comp.java
Titolo: SwingWorker e oggetto ritornato

Ciao a tutti,
cm da oggetto il mio problema riguarda un oggetto 
SwingWorker<String,Void> e la stringa che DOVREBBE restituire.
Posto che ho letto il tutorial di Swing sul sito della Sun, ma non ho 
ancora ben chiaro COME usare uno swingworker, vi mostro il codice che ho 
buttato giu:
SwingWorker worker = new SwingWorker<String,Void>(){
                         @Override
                         protected String doInBackground() throws 
Exception {
                             String plot = 
PlotGetter.getPlotfromTitle((String)DBTable.getValueAt(DBTable.getSelectedRow(), 
0));
                             return plot;
                         }
                         @Override
                         protected void done(){
                             try {
                                 txtarea.setText(get());
                                 if(txtarea.equals("Non 
trovato!")){btnSavePlot.setEnabled(false); 
JOptionPane.showMessageDialog(null,"NON TROVATO!");}
                                 else btnSavePlot.setEnabled(true);
                             } catch (InterruptedException ex) {
 
Logger.getLogger(GetPlotsView.class.getName()).log(Level.SEVERE, null, ex);
                             } catch (ExecutionException ex) {
 
Logger.getLogger(GetPlotsView.class.getName()).log(Level.SEVERE, null, ex);
                             }
                         }
                     };
Solo che quando faccio partire il tutto, il thread parte (visto ke la 
gui nn si blocca) ma non ritorna mai nulla. Immagino il problema sia o 
che non ho assolutamente capito come si usa questa classe, o che non 
posso fare la chiamata a PlotGetter.getPlotFromTitle(..)....
Voi cosa ne pensate??
Grazie mille
Ciao

 Ciao
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/relazioni-molti-molti-con-jpa.html

 non fa niente e restituisce una stringa predefinita.
Il problema è che ho già provato con i tutorial più semplici 
possibile....boh, immagino mi sfugga qualcosa....riproverò.
Quando dici che "manca il codice che chiama ciò che ho postato, intendi 
dire che dovrei fare una chiamata di qualche tipo per avere i dati di 
risposta?? Io avevo capito che, implementando il metodo done() l'avrebbe 
direttamente fatto lo SwingWorker, una volta avesse finito....
Grazie ancora per l'aiuto
Ciao

 direttamente fatto lo SwingWorker, una volta avesse finito....
Non conosco SwingWorker e non capisco come avvenga il passaggio dal 
click dell'utente all'avvio dello SwingWorker.
Non so se non lo capisco perché non conosco SwingWorker o perché manca 
del codice che hai postato.
Vedo che il tuo codice è così:
SwingWorker worker = new SwingWorker() {
...
};
Dopo di questo mi aspettavo di vedere qualcosa del tipo:
worker.start();
Oppure worker.run(), dato che non conosco swingworker non so il nome del 
metodo.
-- 
Andrea Francia
http://www.andreafrancia.it/

 
Avevi ragione, ovviamente....
Il fatto che non avessi capito come funzionava la classe, mi aveva 
impedito di capire in effetti quello che stavo facendo.
Il tutorial di sun faceva riferimento al codice completo del programma 
d'esempio...e io QUELLO non l'avevo letto....
Ho dato un occhio ed in effetti adesso so che devo semplicemente scrivere:
worker.execute();
Adesso funziona, ma devo testarlo un po'....non sono sicuro di non avere 
scritto che può inaspettatamente inchiodarsi per problemi di concorrenza...
Grazie mille per l'aiuto.
Al prossimo post ;)
Ciao