天天看点

《Java数字图像处理:编程技巧与应用实践》——第3章 基本Swing UI组件与图像显示 3.1 JPanel组件与BufferedImage对象的显示

本节书摘来自华章计算机《java数字图像处理:编程技巧与应用实践》一书中的第3章,第3.1节,作者 贾志刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

上一章介绍了bufferedimageop的一些重要知识,实现了几个常见的图像特效,本章介绍如何通过swing ui组件显示与刷新图像。首先会介绍java swing的顶层组件jframe,然后介绍swing中最重要和使用频率最高的组件jpanel,教会读者重写jcomponent中的paintcomponent()方法来实现图像的显示,最后会介绍swing组件jbutton捕获与监听用户行为时最重要的actionlistener接口的使用,以及在swing事件派遣线程中刷新显示等的技巧,希望可指导读者在后续的图像处理实践中,通过swing ui来实现自己的ui测试类。

本书不是一本专门介绍java swing编程的图书,因此要求读者对java swing常见组件有基本认识,对swing事件监听与处理有基本的知识。

本章最主要的目的是实现一个java swing ui,即一个测试框架,来测试第4章到第13章中所有继承自abstractbufferedimageop抽象类的源代码,帮助读者更好地理解所学到的关于图像处理的知识与内容。

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

1)重载jpanel中的 paintcomponent()方法。

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

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

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

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