Проблема с перерисовкой изображения камеры JInternalFrame

Я использую JInternalFrame для просмотра изображения с камеры, я получаю изображение, но оно очень часто мигает/мигает, поэтому я едва вижу изображение. Я расширяю JFrame вместо JInternalFrame, все отлично работает. Возможно, JInternalFrame работает иначе, чем JFrame, но я не могу понять проблему с обновлением.

public class CameraView extends JInternalFrame{

  private JPanel contentPane;

  VideoCap videoCapture = new VideoCap();

public CameraView(){
    setSize(400, 400);

    setLocation(100, 100);

    contentPane = new JPanel();
    setContentPane(contentPane);
    contentPane.setLayout(null);
    new MyThread().start();
}

    @Override
    public void paint(Graphics g){
        g = contentPane.getGraphics();
        g.drawImage(videoCapture.getOneFrame(), 0, 0, this);
    }


    class MyThread extends Thread{
        @Override
        public void run() {
            for (;;){
                repaint();
                try { Thread.sleep(30);
                } catch (InterruptedException e) {    }
            }  
        } 
    }

}


person PRCube    schedule 03.04.2016    source источник
comment
используйте Swing Timer вместо Thread{, заблокированного Thread.sleep(30);, подробнее в руководствах по Oracle о EventDispatchThread   -  person mKorbel    schedule 04.04.2016


Ответы (1)


Вы должны удалить

g = contentPane.getGraphics();

а также

contentPane.setLayout(null);
person gpasch    schedule 03.04.2016
comment
Когда я удаляю contentPane.setLayout(null); Я получаю сообщение об ошибке, но удаляю g = contentPane.getGraphics(); работал нормально. Спасибо - person PRCube; 03.04.2016