下面的代码是我的视图,我在其中显示流式摄像机。控制器句柄设置图像并重新绘制JInternalFrame。我有一个问题,因为相机图像覆盖整个JInternalFrame甚至标题栏。我尝试使用JPanel但是我在JPanel上获取图像时遇到了问题,因为我扩展了JInternalFrame。
public class CameraView extends JInternalFrame{
private BufferedImage image;
public CameraView(){
super("Camera", false,false,false, false);
setSize(500,500);
setLocation(200,200);
}
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
public void setImage(BufferedImage image){
this.image = image;
}
}
答案 0 :(得分:0)
您正在覆盖框架的paint
方法。这个paint
方法是绘制标题栏的方法。
您应该创建第二个扩展JComponent
的类,覆盖该类的paint
方法,然后将其实例添加到您的框架中。
类似的东西:
public class CameraView extends JInternalFrame{
private BufferedImage image;
public CameraView(){
super("Camera", false,false,false, false);
setLocation(200,200);
add(new JComponent() {
{
setSize(500, 500); // size of the image
}
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
});
pack();
}
public void setImage(BufferedImage image){
this.image = image;
}
}
您也可以使用paint
方法调用super.paint(g);
,但现在设置方式,您的图片将覆盖标题栏。
此外,调用super("Camera", false,false,false, false);
与调用super("Camera")
相同。默认值为false
。