如何动态更新图像到jlabel

时间:2015-08-04 07:07:43

标签: java image swing jlabel

我正在尝试创建一个简单的应用程序,它可以从网络摄像头拍摄图像并将其显示在jlabel中。但我没有工作。我无法理解原因。我的完整项目上传到here. 我使用this库来获取图像,遵循代码。

// 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,我感谢您。

1 个答案:

答案 0 :(得分: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) {

    }