Ho un'applicazione swing che memorizza un elenco di oggetti. Quando gli utenti fanno clic su un pulsante,Prevent Swing GUI che si blocca durante un'attività in background
Voglio eseguire due operazioni su ciascun oggetto nell'elenco, e una volta completato, grafico i risultati in un JPanel. Ho provato SwingWorker, Callable & Eseguibile per l'elaborazione, ma non importa cosa faccio, mentre elabora l'elenco (che può richiedere alcuni minuti, dato che è legato all'IO), la GUI è bloccata.
Ho la sensazione che sia probabilmente il modo in cui sto chiamando i thread o qualcosa del genere, o potrebbe avere a che fare con la funzione grafica? Questo non è threaded in quanto è molto veloce.
Devo fare anche le due fasi di elaborazione, quindi qual è il modo migliore per assicurarsi che il secondo abbia aspettato il primo? Ho usato join(), e poi
while(x.isAlive())
{
Thread.sleep(1000);
}
per cercare di garantire questo, ma io sono preoccupato che questo potrebbe essere la causa del mio problema troppo.
Ho cercato dappertutto alcune indicazioni, ma poiché non riesco a trovarne sono sicuro che sto facendo qualcosa di stupido qui.
Potrebbe essere utile includere un codice che mostri come stai usando SwingWorker. –
concordato; mostraci il codice problematico. – Rob