Java 在JPanel'中加载图像;以高效的方式从文件系统中删除一组子组件

Java 在JPanel'中加载图像;以高效的方式从文件系统中删除一组子组件,java,swing,Java,Swing,我需要在JPanel组件中加载图像。 考虑JPAND有10个组件,所有这些组件都需要用背景图像来设置。 因此,在绘制方法中,我实现了背景图像设置逻辑,但速度非常慢 我想以高效的方式完成同样的任务。每次移动、拖动、调整大小时都会调用组件的绘制方法。。。您的窗口和其他几种情况下。因此,仅使用paint方法(重新)绘制组件,并仅调用一次加载过程 创建图像的小缩略图,并将其缓存在某种类中,例如: class Thumbnail extends Component { ... Buffered

我需要在JPanel组件中加载图像。 考虑JPAND有10个组件,所有这些组件都需要用背景图像来设置。 因此,在绘制方法中,我实现了背景图像设置逻辑,但速度非常慢


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

每次移动、拖动、调整大小时都会调用组件的绘制方法。。。您的窗口和其他几种情况下。因此,仅使用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,..,..,..,..);
   }
}