2013-11-28 2 views
1

기본 Java 런타임의 progressbar 클래스를 사용하는 프로그램을 작성했습니다. 그것은 한 번만 작동한다는 사실을 제외하면 완벽하게 작동합니다. 내 GUI로 다양한 이미지의로드를 표시하는 데 사용하고 그것은 시작시 잘 작동합니다. 그러나 일단 다시 호출하면 내용이없는 JFrame 만 표시됩니다. JFrame을 드래그하여 모든 것을 표시 할 수 있습니다. 아무 것도 표시하지 않습니다. 이는 처음 실행될 때 작동한다는 점을 감안하면 특이하지만 이후에는 작동하지 않습니다. 여기 내 코드는 다음과 같습니다.두 번째 호출시 ProgressMonitor가 표시되지 않는 이유는 무엇입니까?

public void prefetch(){ 
    try{ 
     pageURLs = mangaEngine.getPageList(); 
     monitor = new ProgressMonitor(parent, "Loading Chapter..,", null, 0, mangaEngine.getPageList().length); 
     pages = new StretchIconHQ[pageURLs.length]; 
     //Resets page counter to first page by fetching pages in reverse order 
     monitor.setMaximum(pageURLs.length-1); 
     for(int i = pageURLs.length-1; i>=0; i--){ 
      pages[i] = mangaEngine.loadImg(pageURLs[i]); 
      monitor.setProgress(pageURLs.length-1-i); 
      monitor.setNote("Loading Image:" + (pageURLs.length-1-i) + " of " + (pageURLs.length-1)); 
     } 

    } 
    catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

해결 방법에 대한 아이디어가 있습니까?

답변

1

장기 실행 코드는 SwingWorker로 만든 것과 같은 백그라운드 스레드에서 실행해야합니다. 모니터의 진행 특성을

  • 은 "진보"를 듣고 그것에 PropertyChangeListener를 추가
  • 업데이트를

    • SwingWorker를
    • 만들기 :

      는 사실, Progress Monitor Tutorial 정확히이 작업을 수행하는 방법에 대해 설명합니다 SwingWorker 's의 그것과.

  • 관련 문제