首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JInternalFrame重绘问题

JInternalFrame重绘问题
EN

Stack Overflow用户
提问于 2016-04-29 18:42:28
回答 1查看 192关注 0票数 0

下面的代码是我的视图,在那里我可以看到一个流式摄像头。控制器处理设置图像并重新绘制JInternalFrame。我对此有一个问题,因为相机图像覆盖了整个JInternalFrame,甚至标题栏。我尝试使用JPanel,但是在JPanel上获取图像时遇到了问题,因为我扩展了JInternalFrame。

代码语言:javascript
复制
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;
   }
}

这就是看起来的样子。没有标题栏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 19:03:25

您正在重写框架的paint方法。这个paint方法就是绘制标题栏的方法。

您应该创建扩展JComponent的第二个类,覆盖该类上的paint方法,然后将其实例添加到您的框架中。

类似于:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36945423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档