2012-03-29 51 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

相关问题