Domanda su Swing e refresh

2 views
Skip to first unread message

Carlo Politi

unread,
May 10, 2007, 6:25:09 AM5/10/07
to jugto...@googlegroups.com
Salve a tutti, come qualcuno di voi forse sa, ho fatto un programma per scaricare aggiornamento di antivirus mediante Java (e Swing) però il mio problema è che avrei bisogno di migliorare, o meglio, curare il refresh della schermata quando avvio lo scaricamento. Infatti, lancio il processo e fino a quando non ha finito, non posso clicca altra cosa che si trovi nella schermata del programma. Ora, se tale cosa diciamo che va bene così l'utente non clicca altro delle opzioni del programma, dall'altra parte mi secca non poco perché si verificano "simpatici" problemi di non refresh delle informazioni sullo status delle operazioni correnti. C'è qualcuno che può scaricare il mio programma dalla mia pagina ( http://politi.carlo.googlepages.com/mup) ed eseguire il programma? E' un file JAR di poco più di 100KB e lo si può lanciare sia da riga di comando sia cliccandoci sopra. Prevede sia una parte testuale, adatta alle operazioni batch mediante l'utilizzo di combinazione di molti parametri disponibili oppure il tutto mediante interfaccia grafica (la mia dannazione...). E' scritto con Java 6 e ricordo come eseguirlo:

da riga di comando: java -jar mup.jar

oppure

cliccandoci sopra 2 volte

Grazie già da ora per le dritte

--
Carlo Politi
eMail: politi...@gmail.com
WebPage: http://politi.carlo.googlepages.com

Alessio Carotenuto

unread,
May 10, 2007, 10:10:08 AM5/10/07
to jugToscana
Ciao Carlo.
il problema si verifica in quanto la chiamata al processo di
scaricamento è bloccante e, appunto, blocca anche il therad di
dispatching degli eventi AWT. La soluzione sta nell'eseguire la
chiamata al processo in un Thread separato da quello principale. Per
semplicità ti consiglio di dare un'occhiata ai metodi:

static void invokeAndWait(Runnable doRun)

e

static void invokeLater(Runnable doRun)

della classe javax.swing.SwingUtilities.

Un esempio d'uso è il seguente

[...]
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
download();
}
});
} catch (Exception e) {
System.err.println("error");
}

Ciao

Alessio Carotenuto.

Carlo Politi ha scritto:

Reply all
Reply to author
Forward
0 new messages