2016-04-03 2 views
0

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

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) { } 
      } 
     } 
    } 

}

+0

использование 'Качели Timer', вместо' 'Thread {loked на' Thread.sleep (30); ', больше в учебниках Oracle о EventDispatchThread – mKorbel

ответ

1

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

g = contentPane.getGraphics(); 

и

contentPane.setLayout(null); 
+0

Когда я удаляю contentPane.setLayout (null); Я получаю ошибку, но удаление g = contentPane.getGraphics(); работал отлично. спасибо – PRCube

Смежные вопросы