读书频道 > 网站 > 网页设计 > Java数字图像处理:编程技巧与应用实践
3.1 JPanel组件与BufferedImage对象的显示
15-12-08    下载编辑
收藏    我要投稿   
本书分为两大部分,其中第一部为前三章,主要介绍Java Swing编程的基础知识。第二部分是本书的核心内容,系统全面地介绍图像处理的各种方法与常见应用场景编程实现。如果你已经对Java语言和Java Swing有基本的立即去当当网订购

刚接触Swing编程的读者可能对JPanel的了解并不多,常常不清楚如何在JPanel中显示图像,而网上的很多教程又是通过JLabel来作为BufferedImage实例显示组件的,这其实不是一种很好的方法,不值得推荐。在JPanel中显示BufferedImage对象实例时,值得推荐的做法应该是通过重载paintComponent()方法来实现图像的显示与及时刷新。这种方法的大致实现可以分为以下几步。

1)重载JPanel中的 paintComponent()方法。

2)获取Graphics2D图形引擎绘制对象,使用drawImage方法绘制图像,代码如下:

protected void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.clearRect(0, 0, this.getWidth(),
                        this.getHeight());
    if(sourceImage != null)
    {
        g2d.drawImage(sourceImage, 0, 0,
            sourceImage.getWidth(),
            sourceImage.getHeight(), null);
        if(destImage != null)
        {
            g2d.drawImage(destImage,
                    sourceImage.getWidth() + 10 ,
                0, destImage.getWidth(),
                destImage.getHeight(), null);
        }
    }
}

3)使用repaint()方法及时绘制更新。

以上简单的三步即可实现BufferedImage对象实例在JPanel的现实与刷新。

根据上述方法实现了一个完整的可以显示与刷新BufferedImage对象实例的ImagePanel类,代码如下:

package com.book.chapter.three;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;

public class ImagePanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private BufferedImage sourceImage;
    private BufferedImage destImage;
    public ImagePanel()
    {
        // do nothing
    }
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.clearRect(0, 0, this.getWidth(),
                    this.getHeight());
        if(sourceImage != null)
        {
            g2d.drawImage(sourceImage, 0, 0,
            sourceImage.getWidth(),
            sourceImage.getHeight(), null);
            if(destImage != null)
            {
                g2d.drawImage(destImage,
                sourceImage.getWidth() + 10 ,
                0, destImage.getWidth(),
                destImage.getHeight(), null);
            }
        }
    }
    public BufferedImage getSourceImage() {
        return sourceImage;
    }
    public void setSourceImage(BufferedImage sourceImage) {
        this.sourceImage = sourceImage;
    }
    public BufferedImage getDestImage() {
        return destImage;
    }
    public void setDestImage(BufferedImage destImage) {
        this.destImage = destImage;
    }

}

 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站