2016-04-03 2 views
0

J'utilise JInternalFrame pour voir une image de caméra, j'obtiens une image mais elle clignote/clignote très fréquemment, donc je peux à peine voir l'image. J'étend JFrame au lieu de JInternalFrame, tout fonctionne parfaitement bien. Peut-être que JInternalFrame fonctionne différemment de JFrame mais je n'arrive pas à comprendre le problème avec la mise à jour.JInternalFrame caméra 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

utilisation 'swing Timer', au lieu de' '{Discussion loked par' Thread.sleep (30); ', plus dans les didacticiels Oracle sur EventDispatchThread – mKorbel

Répondre

1

Vous devez supprimer

g = contentPane.getGraphics(); 

et

contentPane.setLayout(null); 
+0

Lorsque je supprime contentPane.setLayout (null); J'obtiens une erreur, mais en supprimant g = contentPane.getGraphics(); a bien fonctionné. Je vous remercie – PRCube