Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    Questo è il metodo sendFile
    codice:
    public void sendFile(File f) throws IOException
           {
                 long dimensioneFile = f.length();
                
                       
                 // inizializzo GUI con progress bar -->
    
               GUItrasferimento = new GUItrasferimento(this.GUIBROWSE_LOC, false, this);
    
                GUItrasferimento.setVisible(true);
                //GUItrasferimento.jLabel6.setText(DEST_DIR);
                GUItrasferimento.jLabel7.setText(0+" kb /");
                GUItrasferimento.jLabel8.setText(dimensioneFile +" kb");
    
                // <---
    
                FileInputStream fis = null;
            try {
    
                fis = new FileInputStream(f.getPath());
    
                byte[] buf = new byte[1024];
    
                int read;
                long progresso=0;
                int tot=0;
    
              
                while ((read = fis.read(buf)) != -1 ) {
    
                   
                   
                    tot+=read;
                    // dim : 100% = tot : x
                
                //System.out.println("Progresso: "+progresso+"%");
                
                progresso = (tot*100)/dimensioneFile;
                
                
                GUItrasferimento.jProgressBar1.setValue((int)progresso);
                
                GUItrasferimento.jLabel7.setText(tot+" kb /");
    
                OOS.write(buf, 0, read);
    
                }
               
             
                    OOS.writeObject("ARRIVED");
                
        
                OOS.flush();
    
                GUItrasferimento.jButton2.setText("Ok");
                interrompi = false;
               
    
    
            } catch (FileNotFoundException ex) {
                Logger.getLogger(browse.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    fis.close();
                } catch (IOException ex) {
                    Logger.getLogger(browse.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
           }

  2. #12
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cawletto
    Questo è il metodo sendFile
    codice:
    public void sendFile(File f) throws IOException
           {
                 long dimensioneFile = f.length();
                
                       
                 // inizializzo GUI con progress bar -->
    
               GUItrasferimento = new GUItrasferimento(this.GUIBROWSE_LOC, false, this);
    
                GUItrasferimento.setVisible(true);
                //GUItrasferimento.jLabel6.setText(DEST_DIR);
                GUItrasferimento.jLabel7.setText(0+" kb /");
                GUItrasferimento.jLabel8.setText(dimensioneFile +" kb");
    
    ........
    sendFile è invocato in quale contesto? Lo invochi nel contesto di es. un actionPerformed(ActionEvent) di un pulsante? Se è così, è inappropriato (stai tenendo impegnato il EDT).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #13
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    Si è a seguito di un actionPerformed! Quindi cosa mi consigli di fare?

  4. #14
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cawletto
    Si è a seguito di un actionPerformed! Quindi cosa mi consigli di fare?
    Eseguire il lavoro di trasferimento in un thread separato. Con tutto quello che comporta (ad esempio in un thread separato non è appropriato fare un setValue sul JProgressBar o un setText su un JLabel).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #15
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    Originariamente inviato da andbin
    Eseguire il lavoro di trasferimento in un thread separato.
    Si è proprio quello che stavo facendo!

    Originariamente inviato da andbin
    Con tutto quello che comporta (ad esempio in un thread separato non è appropriato fare un setValue sul JProgressBar o un setText su un JLabel).
    Ma io dal mio nuovo thread ottengo la variabile progresso. E come faccio a non farlo nel thread? Chiamo un metodo che si trova fuori dal thread a cui passo la variabile progresso?

  6. #16
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cawletto
    E come faccio a non farlo nel thread?
    Devi farlo "passare" nel EDT: -> SwingUtilities.invokeLater(Runnable)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #17
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    ok Grazie! funziona tutto

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.