以高效的方式从文件系统中加载JPanel的子组件集中的图像

时间:2012-03-12 17:38:51

标签: java swing

我要求在JPanel组件中加载图像。 考虑到JPanel有10个组件,所有这些组件都需要使用Background图像进行设置。 所以在paint方法中我实现了背景图像设置逻辑,但速度非常慢。

我想以有效的方式完成同样的任务。

1 个答案:

答案 0 :(得分:2)

每次移动,拖动,调整大小......窗口以及其他几种情况时,都会调用Component的paint方法。因此,只使用paint方法(重新)绘制组件并仅调用一次加载过程。

创建图片的小缩略图,并将其缓存在某种类中,例如:

class Thumbnail extends Component {
   ...
   BufferedImage cachedThumbnail;

   public Thumbnail(File thumbnailFile) {
       //read image
       //(scale image)
       this.cachedThumbnail = ...;
   }
   ...
   public static void paint(Graphics2D g) {
     //only paint the cached image ...
     g.drawImage(cachedThumbnail,..,..,..,..);
   }
}