Oppure

Loading
05/03/12 15:49
killer
Salve a tutti ho creato una funzione che legge il contenuto di un file, in una directory scelta.
Come faccio ad incrementare i valori della progress bar? il metodo setValue(valore) non funziona x nulla. sbaglio qualcosa !?
Ho la necessità di calcolare la percentuale esatta di progressione, man mano che il file viene letto . Chi mi aiuta e mi fa capire bene come si fa?

try {
            File fout = null;
            FileChannel in = new FileInputStream(new File("f.iso")).getChannel();
            FileChannel out = new FileOutputStream((fout = new File("clonato.iso"))).getChannel();
            long position = 0;
            long byteCount = in.size();
            while (position < byteCount) {
                System.out.println("lettura in corso");
                System.out.println("position: " + (position += in.transferTo(position, byteCount, out)));
                jProgressBar1.setValue((100 * (int) position) / (int) byteCount);
                jProgressBar1.repaint();
            }
            System.out.println("File copy complete. " + byteCount + " bytes copied to " + fout.getAbsolutePath());
            in.close();
            out.close();
} catch (IOException e) {
            e.printStackTrace(System.err);
}


Ho notato che il valore di ritorno del metodo transferTo viene aggiornato ogni 2GB e subito dopo riparte il ciclo. come mai !? e se volessi man mano tenere traccia dell'andamento progressivo sulla pbar?
Ultima modifica effettuata da killer 05/03/12 15:51
aaa
16/03/12 16:25
tekdu
Non sono sicuro ma suppongo tu debba far eseguire l'update della barra da un thread!
aaa
16/03/12 16:34
fraioveio
Se questo codice lo metti in un evento di un pulsante, durante l'esecuzione dell'evento il frame non aggiorna più.

Prova a mettere questo codice in un thread che viene attivato quando premi il pulsante.
il repaint non serve :nono:.

Un consiglio:
Per rendere il programma più veloce aggiorna la ProgressBar solo quando cambia la percentuale:k:.
aaa