Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Progress bar non funziona.
Forum - Java - Progress bar non funziona.

Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 16:49
Lunedì, 05/03/2012
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?

Codice sorgente - presumibilmente Java

  1. try {
  2.             File fout = null;
  3.             FileChannel in = new FileInputStream(new File("f.iso")).getChannel();
  4.             FileChannel out = new FileOutputStream((fout = new File("clonato.iso"))).getChannel();
  5.             long position = 0;
  6.             long byteCount = in.size();
  7.             while (position < byteCount) {
  8.                 System.out.println("lettura in corso");
  9.                 System.out.println("position: " + (position += in.transferTo(position, byteCount, out)));
  10.                 jProgressBar1.setValue((100 * (int) position) / (int) byteCount);
  11.                 jProgressBar1.repaint();
  12.             }
  13.             System.out.println("File copy complete. " + byteCount + " bytes copied to " + fout.getAbsolutePath());
  14.             in.close();
  15.             out.close();
  16. } catch (IOException e) {
  17.             e.printStackTrace(System.err);
  18. }



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 il 05/03/2012 alle 16:51
PM Quote
Avatar
tekdu (Normal User)
Rookie


Messaggi: 45
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 17:25
Venerdì, 16/03/2012
Non sono sicuro ma suppongo tu debba far eseguire l'update della barra da un thread!

PM Quote
Avatar
fraioveio (Member)
Rookie


Messaggi: 34
Iscritto: 27/03/2011

Segnala al moderatore
Postato alle 17:34
Venerdì, 16/03/2012
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:.

PM Quote