2

Можно создать дубликат:
JProgressBar wont updateПрогресс бар замораживания во время загрузки файла в Java

Так что я пытаюсь показать ход загрузки файла скачанные в Java. Я могу вывести текущий процент как String на консоль, но когда я пытаюсь обновить интерфейс, он зависает, пока загрузка не будет завершена.

public void downloadFile(String fileName) { 
    try { 
     long startTime = System.currentTimeMillis(); 

     System.out.println("Connecting to site...\n"); 

     URL url = new URL("http://assets.minecraft.net/"+fileName+"/minecraft.jar"); 
     URLConnection connection = url.openConnection(); 
     try (InputStream reader = url.openStream(); FileOutputStream writer = new FileOutputStream("minecraft.jar")) { 
      byte[] buffer = new byte[153600]; 
      int totalBytesRead = 0; 
      int bytesRead = 0; 
      int totalSize = connection.getContentLength(); 
      jProgressBar1.setMaximum(totalSize); 

      System.out.println("Downloading\n"); 

      while ((bytesRead = reader.read(buffer)) > 0) { 
       writer.write(buffer, 0, bytesRead); 
       buffer = new byte[153600]; 
       totalBytesRead += bytesRead; 
       jProgressBar1.setValue(totalBytesRead); 
       System.out.println(totalBytesRead*100/totalSize+"% complete"); 
      } 

      long endTime = System.currentTimeMillis(); 

      System.out.println("Done. " + (new Integer(totalBytesRead).toString()) + " bytes read (" + (new Long(endTime - startTime).toString()) + " millseconds).\n"); 
     } 
    } 
    catch (MalformedURLException e) { 
    } 
    catch (IOException e) { 
    } 
} 

Я где-то читал, что вам нужно использовать другой поток, но я не смог это сделать.

ответ