imgpanel.setImage (им);не работает в цикле при нажатой кнопке, но работает нормально за один проход - PullRequest
2 голосов
/ 29 марта 2012

Этот цикл работает нормально в функции Main , но когда копируется этот код loop в действие при нажатии кнопки, он не работает. Он показывает изображение только на последней итерации, в противном случае он отображается пустым.

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

    }

}

1 Ответ

4 голосов
/ 29 марта 2012

Вы блокируете поток событий, поэтому перерисовка не производится. Если вы хотите отобразить каждое изображение, вам придется вручную вызывать repaint() на панели или в кадре после каждого setImage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...