Buon pomeriggio ragazzi,
da qualche giorno sto diventando scemo dietro a quello che ritengo un problema inspiegabile!
ho una applicazione che mostra a video delle label con del testo e alcune immagini.
Scendo nel dettaglio:
La mia finestra è un JFrame, nel quale colloco un JPanel nel quale sono contenute le varie label e le varie immagini.
il contenuto del pannello è variabile, e si aggiorna ogni tot secondi, mostrando informazioni diverse ogni volta.
fin qui tutto ok, mi mostra il mio bel pannello con sfondo, label di testo e immagini. ogni tanto, dopo il refresh (chiamato con repaint()), in modo casuale mi mischia tutte le informazioni, moltiplicando il background e alcune label. io credo che l'errore sia nel chiamare repaint. altrimenti è non sò proprio. le funzioni che disegnano gli oggetti sono corrette, quindi non resta che il repaint. vi posto qui sotto come lo ho usato, forse ho sbagliato qualcosa:
Codice PHP://tMonitor è un thread
tMonitor.join();
//initMonitor(bFineProg);
//disegno il desktop
MonitorObj.disegnaDesktop(jPannello, "./Sfondi/"+myRetMon.arrayMon[0][9], Integer.parseInt(myRetMon.arrayMon[0][0]), Integer.parseInt(myRetMon.arrayMon[0][1]), Integer.parseInt(myRetMon.arrayMon[0][3]), Integer.parseInt(myRetMon.arrayMon[0][2]));
if (bFlag==0){
//MonitorObj.creaFinestra(framePrincipale, jPannello, PosX, PosY, larghezza, altezza);
//creo la finestra
MonitorObj.creaFinestra(framePrincipale, jPannello, Integer.parseInt(myRetMon.arrayMon[0][0]), Integer.parseInt(myRetMon.arrayMon[0][1]), Integer.parseInt(myRetMon.arrayMon[0][3]), Integer.parseInt(myRetMon.arrayMon[0][2]));
framePrincipale.add(jPannello);
framePrincipale.doLayout();
//rendo visibile il frame principale
framePrincipale.setVisible(true);
bFlag=1;
}//altrimenti
else{
/*
//aggiungo il pannello al frame principale
jPannello.revalidate();
framePrincipale.add(jPannello);
//chiamo repaint su framePrincipale
framePrincipale.repaint();
framePrincipale.setVisible(true);
*/
//aggiungo il pannello al frame principale
jPannello.validate();
framePrincipale.add(jPannello);
framePrincipale.validate();
//chiamo repaint su framePrincipale
framePrincipale.repaint();
}

Rispondi quotando