2016-04-03 15 views
0

Bir kamera görüntüsünü görüntülemek için JInternalFrame kullanıyorum, bir görüntü alıyorum ancak çok sık yanıp sönüyor/yanıp sönüyor, dolayısıyla görüntüyü zar zor görebiliyorum. JFrame'i JInternalFrame yerine uzatıyorum, her şey gayet iyi çalışıyor. Belki JInternalFrame JFrame için farklı çalışır, ancak bu güncelleştirmeyle sorunu anlayamıyorum.JInternalFrame camera image repaint issue

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

kullanımını kaldırmak zorunda '(yerine Thread.sleep' tarafından loked Konu { '' arasında, 30 Timer' Salıncak); ', EventDispatchThread hakkında daha fazla Oracle öğreticisi – mKorbel

cevap

1

Sen

g = contentPane.getGraphics(); 

ve

contentPane.setLayout(null); 
+0

contentPane.setLayout öğesini kaldırdığımda (boş); Hata alıyorum, ancak g = contentPane.getGraphics() kaldırılıyor; iyi çalıştı. teşekkür ederim – PRCube