繁体   English   中英

将Webcam面板添加到现有的jPanel

[英]Adding Webcam panel to existing jPanel

我正在使用NetBeans,并在其中部进行了jPanel的基本布局。 现在,我想在此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);

    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 componenst加载之后。 当我添加示例时,它运行良好,但是随后我的主布局已加载,并且摄像头屏幕显示在另一个窗口中。 我想在同一窗口中获取它。

我看到了其他有关向jPanel添加图像的主题,但不适用于从网络摄像头捕获电影。

感谢帮助。

但是,当我尝试在现有的jPanel中显示它时,它不起作用。

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

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

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

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

我在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 Designer制作组件时不起作用,但现在却很好。 我认为,如果有人将其添加到JTabbedPane中而不是添加到JPanel中,则还应该使用代码来创建此面板。 不与Netbeans设计人员合作,那么它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM