Ciao a tutti,
sto sviluppando un applicazioncina in cui ho bisogno che determinati oggetti una volta aggiunti in un pannello scorrano ad intervalli regolari. Gli oggetti che ho sono sia componenti che figure geometriche, in particolare faccio scorrere, all'interno di un unico pannello contenitore senza layoutManager, altri JPanel e Line2D e RoundRectangle2D. In particolare quando clicco su un pulsante add, viene visualizzato un Jpanel nella parte superiore del pannello contenitore legato da una Line2D ad un RoundRectangle2D. Per fare ciò utilizzo un timer, praticamente ogni volta che il timer scatta (ad esempio ogni 200 millisecondi) quello che accade è:
- sposto di un pixel verso il basso tutti i jpanel, line2D e roundrectangle2D che ho all'interno del pannello contenitore,
- quindi chiamo la repaint() sul pannello contenitore.
A livello di movimento funziona, il problema che ho notato è che più passa il tempo più tempo ci vuole per far scorrere il tutto, non scorre più un pixel ogni 200 millisecondi ma si vede ad occhio che ci mette di più. Inoltre diventa tutto meno reattivo, anche la gestione degli eventi, tipo click del mouse sui pannelli che scorrono. Perché? Si può sviluppare una applicazione in swing in cui so per certo che la repaint() venga effettuata ogni tot millisecondi, o correrò sempre il rischi che rallenti tutto dopo un po'?

Rispondi quotando