将网络摄像头面板添加到现有的 jPanel
Adding Webcam panel to existing jPanel
我正在使用 NetBeans,我在其中使用 jPanel 进行了基本布局。现在我想在这个 jPanel 中添加网络摄像头面板。
下面是如何从网络摄像头获取帧并将其显示在新 window 中的示例。一切正常。
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);
我在主 class 构造函数中调用所有这些。在加载其他 netbeans 组件之后。当我添加示例时,它运行良好,但随后加载了我的主要布局,并且在另一个 window 中加载了网络摄像头屏幕。我想在同一个 window.
中得到它
我看过其他关于将图像添加到 jPanel 的主题,但它不适用于从网络摄像头捕捉电影。
感谢您的帮助。
But when I tried to display it in my existing jPanel it's not working.
当您将组件添加到可见的 GUI 时,基本代码是:
panel.add(...);
panel.revalidate(); // invoke the layout manager
panel.repaint(); // paint components
所有组件在创建时都具有默认大小 (0, 0),因此没有可绘制的内容。您需要调用布局管理器,以便为组件提供 size/location.
我稍微更改了我的应用程序,现在在主要 windows 的中间是 JTabbedPane,我找到了解决我的问题的方法。我没有使用 NetBeans window 设计器制作选项卡,而是使用代码制作它。
我在 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 设计器,然后它应该可以工作。
我正在使用 NetBeans,我在其中使用 jPanel 进行了基本布局。现在我想在这个 jPanel 中添加网络摄像头面板。
下面是如何从网络摄像头获取帧并将其显示在新 window 中的示例。一切正常。
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);
我在主 class 构造函数中调用所有这些。在加载其他 netbeans 组件之后。当我添加示例时,它运行良好,但随后加载了我的主要布局,并且在另一个 window 中加载了网络摄像头屏幕。我想在同一个 window.
中得到它我看过其他关于将图像添加到 jPanel 的主题,但它不适用于从网络摄像头捕捉电影。
感谢您的帮助。
But when I tried to display it in my existing jPanel it's not working.
当您将组件添加到可见的 GUI 时,基本代码是:
panel.add(...);
panel.revalidate(); // invoke the layout manager
panel.repaint(); // paint components
所有组件在创建时都具有默认大小 (0, 0),因此没有可绘制的内容。您需要调用布局管理器,以便为组件提供 size/location.
我稍微更改了我的应用程序,现在在主要 windows 的中间是 JTabbedPane,我找到了解决我的问题的方法。我没有使用 NetBeans window 设计器制作选项卡,而是使用代码制作它。
我在 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 设计器,然后它应该可以工作。