此循环在Main函数中运行良好,但当在按下按钮的操作下复制此循环代码时,它不工作。它只在最后一次迭代时显示图像,否则显示空白。
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
}
}
您正在阻塞事件线程,因此不需要重新绘制。如果要显示每个图像,则必须手动调用面板上的repaint()
或每个setImage
之后的帧。