Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    caricamento file pesante

    Buonasera a tutti!

    Ragazzi, ho riscontrato un problema, nella mia applicazione io devo caricare con il FileChooser un file pesante(circa 100 Mb), il problema che io faccio scegliere il file all'utente e poi quando il file è stato scelto passo ad un'altra finestra e siccome il file ci mette un pò ad essere caricato sembra che l'applicazione si ferma, perché la vecchia frame scomparsa e la nuova non appare fin tanto che il file non sarà completamente caricato.. So che in java esiste uno strumento JProgressBar ma non so proprio come aggiornarlo con dei percentuali...

    Qualcuno mi potrebbe dare una mano oppure qualche suggerimento, grazie 1000

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da TotalNoob Visualizza il messaggio
    io devo caricare con il FileChooser un file pesante(circa 100 Mb)
    Giusto per chiarire: JFileChooser non "carica" un bel nulla. Fa solo sfogliare il file-system e poi fornisce un java.io.File (o più di uno) che rappresenta solo un pathname.

    Quote Originariamente inviata da TotalNoob Visualizza il messaggio
    siccome il file ci mette un pò ad essere caricato sembra che l'applicazione si ferma
    Se la lettura/elaborazione la fai (come presumo) nel contesto del Event Dispatch Thread, allora ovviamente tutta la interfaccia utente è completamente "congelata" in questo frangente.
    Si risolve con il multi-threading, ovvero lettura/elaborazione in un thread separato. Con tutto quello che comporta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    10
    Come ti ha giustamente fatto notare andbin la lettura del file devi farla in un thread separato altrimenti anche utilizzare la JProgressBar non ti aiuta.
    La corretta procedura, quindi, è di inserire la lettura del file all'interno del metodo run della tua classe che deve implementare Runnable, aprire il file e leggerne la lunghezza (questo dato ti serve come parametro per il metodo setMaximum di JProgressBar), dopodiché mano a mano che acquisisci i bytes del file aggiorni la progress.

    Il vantaggio di inserire la lettura di un file in un thread separato ti dà anche la possibilità di gestire un eventuale abort interrompendone il caricamento nel caso in cui il file fosse esageratamente grande
    http://www.globalreports.it - La libreria java per creare files PDF

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.