2016-04-03 106 views
0

我使用JInternalFrame查看攝像頭圖像,我得到一個圖像,但它非常頻繁地閃爍/眨眼,所以我幾乎看不到圖像。我擴展JFrame而不是JInternalFrame,一切正常。也許JInternalFrame與JFrame的工作方式不同,但我無法弄清楚更新的問題。JInternalFrame攝像頭圖像重繪問題

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.sleep loked(30 );',更多關於EventDispatchThread的Oracle教程 – mKorbel

回答

1

您必須刪除

g = contentPane.getGraphics(); 

contentPane.setLayout(null); 
+0

當我刪除contentPane.setLayout(null);我得到錯誤,但刪除g = contentPane.getGraphics();工作得很好。謝謝 – PRCube