2015-08-04 2 views
1

Я пытаюсь создать простое приложение, которое может отображать изображение из веб-камеры и отображать его в jlabel. но я не работаю. Я не могу понять причину. мой полный проект загружен на here. Я использую библиотеку this, чтобы сделать снимок, следующий код.Как динамически обновлять изображение до jlabel

// get default webcam and open it 
    Webcam webcam = Webcam.getDefault(); 
    webcam.open(); 

    // get image 
    BufferedImage image = webcam.getImage(); 

    try { 
     // save image to PNG file 
     ImageIO.write(image, "PNG", new File("test.png")); 
    } catch (IOException ex) { 
     Logger.getLogger(TestFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    webcam.close(); 

после приема изображения я написал следующий код, чтобы отобразить изображение в JLabel

String path = "test.png"; 
imageLbl.setIcon(null); 
imageLbl.setIcon(new ImageIcon(path)); 
imageLbl.revalidate(); 
imageLbl.repaint(); 
imageLbl.update(imageLbl.getGraphics()); 

если изображение уже тогда он будет отображаться на JLabel. но наиболее разумно взятое изображение не показано. сложно объяснить ситуацию, я ценю, если вы можете скачать и проверить мой проект here.

+0

есть ли у вас какие-либо ошибки? –

+0

попробуйте перерисовать() и revalidate() с фреймом. –

+2

@AnuragSharma 'setIcon' - это связанное поле, оно должно автоматически обновляться – MadProgrammer

ответ

2

Вы можете использовать нижеприведенный код, чтобы динамически обновлять изображение до jlabel.

String path = "test.png"; 
    imageLbl.setIcon(null); 
    try { 
     BufferedImage img=ImageIO.read(new File(path)); 
     imageLbl.setIcon(new ImageIcon(img)); 
     imageLbl.revalidate(); 
     imageLbl.repaint(); 
     imageLbl.update(imageLbl.getGraphics()); 
    } catch (IOException ex) { 

    } 
+0

, он работает! спасибо, –

+1

Но как отличается форма, использующая ImageIcon для загрузки? (Да, я предпочитаю ImageIO, но, по сути, вы делаете то же самое – MadProgrammer

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