我收到了在 JPanel 组件中加载图像的要求。 考虑 JPanel 有 10 个组件,所有这些组件都需要设置背景图像。 所以在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,..,..,..,..);
}
}
关于java - 以有效的方式从文件系统加载 JPanel 子组件集中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672008/