Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142

    Collegare barra di progresso grafica ad un main

    Ciao a tutti,

    vorrei suggerimenti su come far si che una barra di progresso (componente grafico) avanzi contemporaneamente con un main di una classe che deve riempire alcuni database di grossa dimensione. Questo main impiega circa 20 secondi, ma non vorrei settare il tempo della barra di progresso a priori, bensi farla avanzare mentre i database si riempiono e farla terminare quando termina il main (va bene anche qualche secondo dopo)

    grazie anticipatamente

    ciao!
    <esistono cose che non esistono>

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Basarsi su una stima del tempo di esecuzione è quasi universalmente in approccio scorretto: come fai ad avere la garanzia che ci mette sempre 20 secondi? Prova a ipotizzare di eseguire l'applicazione sul tuo sistema a macchina scarica e poi di rifarlo con una scansione antivirus, uno scandisk, una deframmentazione ed un videogioco in esecuzione: le performance saranno ben diverse, no?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Infatti ho detto che non voglio farlo...
    Hai un suggerimento su come fare?
    <esistono cose che non esistono>

  4. #4
    Questo esempio fa al caso tuo...
    Al mio segnale... scatenate l'inferno!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Intanto grazie per il suggerimento.

    Tuttavia...
    non mi sembra che quell esempio esegua qualcos altro apparte la barra di progresso.

    Il mio problema è che mentre un metodo X fa delle operazione io voglio eseguire *concorrentemente* la barra di progresso, che deve terminare solo dopo (o insieme) a quando termina il metodo X
    <esistono cose che non esistono>

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    La classe che puoi utilizzare è quella impiegata anche nell'esempio demo segnalato da R@ve M@ster, ovverosia la JProgressBar del package Swing:
    http://download.oracle.com/docs/cd/E...ogressBar.html

    Solitamente l'aggiornamento è sincrono: ossia sei tu dal codice che calcoli l'avanzamento e lo imposti graficamente sulla barra tramite una setValue().
    Potresti anche pensare ad un aggiornamento asincrono tramite un Thread (sempre che l'architettura della tua applicazione lo consenta), ma a quel punto non avresti nessuna garanzia che l'avanzamento visualizzato sul componente rispecchi effettivamente quello reale

  7. #7
    Originariamente inviato da Pete
    Intanto grazie per il suggerimento.

    Tuttavia...
    non mi sembra che quell esempio esegua qualcos altro apparte la barra di progresso.

    Il mio problema è che mentre un metodo X fa delle operazione io voglio eseguire *concorrentemente* la barra di progresso, che deve terminare solo dopo (o insieme) a quando termina il metodo X
    Guarda bene l'esempio... Tutto ciò che devi fare "in contemporanea" viene eseguito nel metodo doInBackground. Ovviamente ci sostituisci il tuo codice...
    Al mio segnale... scatenate l'inferno!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    ok grazie a tutti per i suggerimenti
    <esistono cose che non esistono>

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.