【问题标题】:Adding Webcam panel to existing jPanel将网络摄像头面板添加到现有的 jPanel
【发布时间】:2015-01-16 15:52:35
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

    标签: java netbeans jpanel webcam


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我之前试过了,它也没有做任何改变。网络摄像头屏幕在 jPanel 中仍然不可见。我什至将 jPanel.revalidate() 和 jPanel.repaint() 添加到按钮中,看看在应用启动时是否有问题。
    【解决方案2】:

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

    我在 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 设计器,然后它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多