Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75

    [JAVA SWING] Swing e applicazioni real time

    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'?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Una prima spiegazione potrebbe essere questa: ogni volta che tu richiedi il ridisegno di un'area di memoria, stai chiedendo il ridisegno del tree (dal pannello superiore ai componenti interni).
    Questo lo fai per diversi componenti (metti n) ogni tot di tempo.
    Quando il numero di componenti sale, ovviamente sale il numero di oggetti su cui lavori, penso ci sia un problema di intasamento di memoria
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75
    Grazie, anche io avevo pensato ad un problema del genere, però in realtà non dovrebbe essere quello della memoria il problema princiapale, perchè facendo alcune prove vedo che col passare del tempo anche se gli oggetti sono pochi rallenta cmq. A questo punto ho pensato che il problema fosse nella mole di lavoro che svolgo dentro la paintComponent, li dove si vanno a ridisegnare ogni volta gli oggetti grafici. Siccome ogni tot millisecondi chiamo una repaint, si va a rieseguire ogni volta il codice nel paintComponent. Però non riesco proprio a capire come fare a fare delle repaint in modo più snello e intelligente.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    hai in pratica detto quello che ho detto io.
    Alternativa:devi cercare di ottimizzare la tua paintComponent, in modo da ridurre al massimo quello che fai (e anche quindi le risorse consumate)
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.