我要求在JPanel组件中加载图像。 考虑到JPanel有10个组件,所有这些组件都需要使用Background图像进行设置。 所以在paint方法中我实现了背景图像设置逻辑,但速度非常慢。
我想以有效的方式完成同样的任务。
答案 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,..,..,..,..);
}
}