【问题标题】:Use BufferedImage in JLabel HTML?在 JLabel HTML 中使用 BufferedImage?
【发布时间】:2025-11-30 13:05:02
【问题描述】:

我可以在 JLabel 的 HTML 中使用 BufferedImage 吗?还是我必须将其保存在本地并通过文件路径调用它?

【问题讨论】:

  • “JLabel 的 HTML”是什么意思?
  • 您可以在 JLabel 中使用 HTML 对其进行格式化。与工具提示和许多包含文本的 JComponent 相同。
  • 为什么? JLabelIcon 属性?为什么不直接使用setIcon(new ImageIcon(bufferedImage))
  • @ThomasNield 但 OP 想使用BufferedImage,大概是img 标签的来源......我猜
  • 然后,是的,您必须将BufferedImage 本地保存到磁盘并使用File#getURI#getURL 作为src 属性...

标签: java swing jlabel bufferedimage


【解决方案1】:

首先,您需要保存图像...

File tmp = File.create("buffer", ".png");
ImageIO.write(img, "png", tmp);

那么你需要使用文件的URL作为src属性到img标签...

StringBuilder sb = new StringBuilder(128);
sb.append("<html><img src='");
sb.append(tmp.toURI().toURL());
sb.append("'></html>");

然后将其设置为文本...

label.setText(sb.toString());
label.setToolTipText(sb.toString());

【讨论】:

  • 非常感谢。而且这个文件实际上是临时的,也就是说它存储在内存中但从未保存过,并且会自行清理?
  • 不,它是临时保存到磁盘的,根据平台,它会放在“tmp”目录下。如果要在 JVM 存在后删除文件,则应在创建后添加 tmp.deleteOnExit()