将Webcam面板添加到现有的jPanel

时间:2015-01-16 15:52:35

标签: java netbeans jpanel webcam

我正在使用NetBeans,我在其中间使用了jPanel进行了基本布局。现在我想在这个jPanel中添加Webcam面板。

以下是如何从网络摄像头获取帧并在新窗口中显示的示例。它工作正常。

    Webcam webcam = Webcam.getDefault();
    webcam.setViewSize(WebcamResolution.VGA.getSize());

    WebcamPanel panel = new WebcamPanel(webcam);
    panel.setFPSDisplayed(true);
    panel.setDisplayDebugInfo(true);
    panel.setImageSizeDisplayed(true);
    panel.setMirrored(true);

    JFrame window = new JFrame("Test webcam panel");
    window.add(panel);
    window.setResizable(true);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.pack();
    window.setVisible(true);

但是当我试图在现有的jPanel中显示它时,它无法正常工作。网络摄像头屏幕不可见。这是我的代码:

    Webcam webcam = Webcam.getDefault();
    webcam.setViewSize(WebcamResolution.VGA.getSize());

    WebcamPanel panel = new WebcamPanel(webcam);
    panel.setFPSDisplayed(true);
    panel.setDisplayDebugInfo(true);
    panel.setImageSizeDisplayed(true);
    panel.setMirrored(true);

    jPanel5.add(panel);
    jPanel5.setVisible(true);

我在主类构造函数中调用了所有这些。在其他netbeans组件加载之后。当我添加示例时,它工作正常,但我的主要布局已加载,另一个窗口中的网络摄像头屏幕。我想在同一个窗口中看到它。

我已经看过有关向jPanel添加图片的其他主题,但它不能用于从网络摄像头捕捉电影。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

  

但是当我试图在我现有的jPanel中显示它时,它无法正常工作。

将组件添加到可见GUI时,基本代码为:

panel.add(...);
panel.revalidate(); // invoke the layout manager
panel.repaint(); // paint components

创建时所有组件的默认大小均为(0,0),因此无需绘制任何内容。您需要调用布局管理器,以便为组件指定大小/位置。

答案 1 :(得分:0)

我改变了一点我的应用程序,现在在主窗口中间是JTabbedPane,我找到了解决问题的方法。我没有使用NetBeans窗口设计器制作Tabs,而是使用代码制作了它。

我在Netbeans中制作了空的JTabbedPane,然后将其添加到代码中:

final JPanel jPanelCamera = new JPanel();

jTabbedPane1.addTab("Camera", jPanelCamera);

Webcam webcam = Webcam.getDefault();
webcam.setViewSize(WebcamResolution.VGA.getSize());

WebcamPanel webcamPanel = new WebcamPanel(webcam);
webcamPanel.setFPSDisplayed(true);
webcamPanel.setDisplayDebugInfo(true);
webcamPanel.setImageSizeDisplayed(true);
webcamPanel.setMirrored(true);

jPanelCamera.add(webcamPanel);
jPanelCamera.getParent().revalidate();

System.out.println("Camera OK");

我不知道为什么早些时候我使用NetBeans设计器制作组件时它不起作用但现在它运行良好。我想如果有人将这个添加到JTabbedPane,但是JPanel也应该使用代码来创建这个面板。不是Netbeans设计师,它应该工作。