Originariamente inviato da Gil1688
Ho una serie di contenitori annidati (JFrame->JScrollPane->JPanel->JLabel in GridLayout).

Il contenuto delle JLabel viene preso da una query su un DB, che com'è normale che sia viene aggiornato frequentemente (nell'ordine di secondi).

Di conseguenza non mi basta caricare le JLabel all'apertura del JFrame; ho la necessità di aggiornarle ogni 15 secondi per esempio.

Il fatto è che se io metto TUTTO il costruttore del JFrame, dove specifico interamente la mia applicazione dentro un

codice:
while (true)
{
    // COSTRUTTORE

    Thread.sleep (15000);
    
    // CANCELLO COSTRUTTORE
}
La finestra non mi viene MAI visualizzata, perchè tecnicamente non è usufruibile in quanto il ciclo è infinito...
Insomma, come posso fare per ricaricare un pò tutto il mio JFrame ogni 15 secondi?
Su una cosa penso non abbia molta scelta, ovvero l'utilizzo del Thread, ma.. COME USARLO senza rimanere intrappolati???

Grazie...
dovresti fare 2 cose: fare un primo caricamento fuori dal costruttore (iniziale per intenderci), metti in una lista, mappa quello che vuoi e istanzi il costruttore con quello. Difficilmente perdi un update (a meno che non hai milioni di dati da elaborare) e non hai caricato il costruttore con codice che non gli pertiene.
Di contro avvii un thread che lavora da demone e fa il tuo sporco lavoro di update dal db. Quando hai disponibili dei dati, generi un evento, il quale andrà a richiedere all'EDT l'update grafico dei dati.
Per me è il modo più ordinato di fare le cose.