2014-03-02 4 views
1

webaite에서 콘텐츠를 다운로드하고 데이터베이스에 저장하는 응용 프로그램에서 진행률 표시 줄을 사용하고 있습니다. 다운로드가 완료되었지만 문제가 데이터베이스에 저장되고 진행률 표시 줄이 100 %가되면 진행률 표시 줄을 표시했습니다. 다운로드하는 동안 5 %, 10 %, 25 % 등으로 모두 저장 한 후 100 %가됩니다. 내가 어떻게 할까? 당신이 입력 데이터가 될 당신이 이미로드 한 양을 추적하고 비율을 얻기 위해 두 숫자 사이의 비율을 사용 얼마나 오래 알고 있다면 내가응용 프로그램에서 진행률 표시 줄을 사용하여 웹 사이트에서 다운로드하는 방법은 무엇입니까?

timer = new Timer(interval, new ActionListener() { 

public void actionPerformed(ActionEvent evt) { 
if (j ==100){ 
//a beep is heard when download is completed 
Toolkit.getDefaultToolkit().beep(); 
timer.stop(); 
jButton3.setEnabled(true); 
pb.setValue(0); 
String str = "<html>" + "<font color=\"#FF0000\">" + "<b>" + "Downloading completed." + "</b>" + "</font>" + "</html>"; 
lbldownload.setText(str); 
      } 
j = j + 1; 
pb.setValue(j); 
     } 
}); 

jButton3.setEnabled(false); 
j = 0; 
String str = "<html>" + "<font color=\"#008000\">" + "<b>" + "Downloading is in progress......." + "</b>" + "</font>" + "</html>"; 
lbldownload.setText(str); 
timer.start(); 



    } 

답변

0

작성한 샘플 코드. 이를 UI에 주기적으로보고하여 진행률 표시 줄을 최신으로 유지하십시오.

예상되는 크기를 모르는 경우 비율을 계산할 수 없습니다.

1

EDT (Event Dispatch Thread)를 차단하지 마십시오. GUI가 그럴 때 '고정'됩니다. 대신 장시간 실행되는 작업에는 SwingWorker을 구현하십시오. 자세한 내용은 Concurrency in Swing을 참조하십시오.

ProgressMonitorInputStream도 다운로드를 모니터링하므로 참조하십시오.