我正在使用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添加图片的其他主题,但它不能用于从网络摄像头捕捉电影。
感谢您的帮助。
答案 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设计师,它应该工作。