【问题标题】:Fastest way of accessing an image in Swing在 Swing 中访问图像的最快方法
【发布时间】:2016-02-21 18:43:54
【问题描述】:

访问项目中的图像文件 (.png) 并将其设置为某物的图标的最快方法是什么?

【问题讨论】:

  • 您问这个问题有什么特别的原因吗?您是在加载图像时遇到性能问题还是只是好奇?
  • 我只是想在每次单击按钮时更改按钮的图标,通过这样做,我认为我必须将图标设置为我得到的图像文件
  • 在这种情况下,你为什么不提前为你需要的每个图标创建一个实例呢?
  • ImageIcon icon1 = ...; ImageIcon icon2 = ...; 并在您的动作监听器中将它们换掉。
  • “最快的方式”是什么意思?渲染图像总是需要时间;加载图像总是需要时间。您可以使用一些预缓存和/或确保颜色模型兼容,但这都需要更多上下文,例如,如果您正在加载 4k 图像,您可能没有足够的内存来同时加载许多图像

标签: java image swing io resource-files


【解决方案1】:

我不确定您期望从不同的解决方案中获得哪些性能提升,因为此任务主要基于 I/O。要从文件中加载.png 并将其设置为按钮的图标,您可以执行以下操作:

File theFile = ...;
button.setIcon(new ImageIcon(theFile.toURI().toURL()));

【讨论】:

  • Reading/Loading an Image 将是一个更强大的解决方案,因为它不会调用后台线程来加载图像,并且如果由于某种原因无法读取文件会抛出异常
【解决方案2】:

我最近才弄明白,原来是这样的button.setIcon(new.javax.swing.ImageIcon(getClass().getResource("/image.png")));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多