2012-03-29 27 views
2

此循環工作正常功能,但當複製此循環代碼在下按鈕按下操作,然後它不起作用。它僅在最後一次迭代中顯示圖像,否則顯示空白。imgpanel.setImage(im);在循環下不工作按鈕被按下功能,但在一次通過工作正常

public void buttonPressed() { 
    BufferedImage im = null; 
    try { 
     Thread.sleep(3000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    int j=100; 
    for(int i=0;i<j;i++) { 

     im = camera.captureImage(); 

     tracker.setImage(im); 
     if (previous.x == -1) { 
      // previous = tracker.searchCorrelation(); 
      previous = tracker.trackMarker(); 
     } else { 
      // previous =tracker.searchCorrelation(previous); 
      previous = tracker.sayemSearch(previous); 
     } 
     if (previous.x != -1) { 
      System.out.println("prevX" + previous.x + "prevY" + previous.y); 
      im = trackedImage(im, previous); 
     } 
     System.out.println("prevX" + previous.x); 
     // System.out.println("prevY"+previous.y); 
     imgpanel.setImage(im); 
     System.out.println("set"); 
     //break;//When i write break then it works 

    } 

} 

回答

4

您正在阻止事件線程,因此不進行重新繪製。如果要顯示每張圖像,則必須在每個setImage之後在面板或框架上手動調用repaint()

+0

我在setImage中調用了repaint()函數,但它沒有工作。請您詳細解釋。 – 2012-03-29 09:28:16

+0

也可能需要在頂級容器上調用'repaint',即frame/view/canvas。 – Neet 2012-03-29 09:36:30

+0

但是爲什麼它在Main函數中工作正常(我已經在上面提到過) – 2012-03-29 09:41:39

相關問題