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

标签 java swing

我收到了在 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/

相关文章:

java - 在 jenkins 中运行 maven/surefire 构建时间歇性 NoClassDefFoundError

java - 从文件中对 ArrayList 进行排序

java - 如何为我的井字游戏添加计分器

java - 如何编辑可更改的图标比例?

java - Web 界面或图形用户界面

java - Java 链表结构(泛型)

java - java计算两个日期之间的时间差,考虑营业时间、停工和周末

java - Spring MVC 和 Hibernate 不起作用

java - 哪些 Swing 组件方法是线程安全的?

java - 我的 JComponents 占用了太多像素