Premettendo che questo è il mio primo approccio a Swing e alle interfacce grafiche in generale, e che quindi per fare quello che sto facendo ci saranno altri 10 modi più precisi ed eleganti, il mio problema è questo:
ho una serie di JButton che visualizzano lo stato di alcuni oggetti; in seguito a degli input da parte dell'utente questi oggetti possono modificare le loro caratteristiche e anche venire del tutto eliminati.
Così, mantenendo il codice che avevo precedentemente scritto, ho pensato che il modo più semplice per fare ciò fosse dopo ogni input dell'utente ricaricare tutti gli oggetti (che sono contenuti in una lista, quindi se uno di essi è stato eliminato non verrà semplicemente più ridisegnato), ovvero eliminarli e ridisegnarli.
Per eliminarli utilizzo il metodo remove(), per ridisegnarli invoco i metodi repaint() e doLayout() sul frame; la prima volta tutto fila liscio, invece dalla seconda in poi i vecchi JButton, che dovrebbero essere spariti, si sovrappongono ai JButton appena creati; se massimizzo e ripristino la finestra, tutto ritorna ok: i vecchi JButton spariscono e rimangono solo i nuovi così come dovrebbe essere.
Da cosa dipende? Esiste un metodo migliore per ricaricare tutti i componenti?
Grazie in anticipo delle vostre risposte.

Rispondi quotando